IO(입출력) 개념3(FileStream/Reader/Writer)

·2022년 11월 6일
0

JAVA객체지향_IO

목록 보기
3/7

File을 읽어오고 출력하는 클래스

  • 경로를 써서 디렉토리를 지정해서 저장할 수 있음
  • FileOutput/InputStream: 파일데이터를 1바이트 단위로 입출력하는 스트림
    (FileNotFoundException 예외 발생)
  • FileWriter/Reader: 파일데이터를 1바이트 단위로 입출력하는 스트림클래스
    (Writer: IOException 예외발생/ Reader: FileNotFoundException 예외발생)

가져올때 반복문 또는 배열이 필요함

FileOutput/InputStream

try{
  FileOutputStream fos = new FileOutputStream("test.txt"); //인자에는 파일명.확장자
  byte[]b = {65,66,67,68};
  fos.write(b);	//출력 => ABCD
  fos.close();
}catch(FileNotFoundException fe){
	System.out.println(fe.getMessage());
}catch(IOException ie){	//write()예외
	System.out.println(ie.getMessage());
}
//같이 쓸 수 있지만 구분해서 보기 위해 따로 써줌
try{
	FileInputStream fis = new FileInputStream("test.txt");
    //방법1
    while(true){ //1바이트씩 읽어오기 때문에 반복문을 써준다
    	int n = fis.read();
        if(n==-1) break;	//더이상 읽어올게 없으면 while문을 빠져나옴
    }
    //방법2 byte배열 => 배열길이만큼 읽겠다는 뜻
    byte[] b = new byte[3];
    long fileSize=0;	//파일 사이즈도 구할 수 있음
//
    while(true){
    	int n = fis.read(b); //읽어온 만큼의 배열크기가 n에 저장됨.n=파일크기
        fileSize+=n;	//n에 파일의 크기를 누적시킴
        if(n==-1) break;
        System.out.write(b,0,n); //b배열 0번째에서 n번째까지 출력하겠다는 뜻
    }
    System.out.println(n);	//ASKII코드 숫자로 출력
    System.out.println((char)n); //문자로 출력
    fis.close();
}catc(FileNotFoundException fe){
	System.out.println(fe.getMessage());
}catch(IOException ie){	//write()예외
	System.out.println(ie.getMessage());
}

:O) FileNotFoundException는 IOException의 자식예외 => 자식예외는 부모보다 위에 있을 수 없다.

FileWriter/Reader

try{
  FileWriter fw = new FileWriter("C:\\java\\test.txt");
  fw.write("Hello \n");	//명시적으로 줄바꿈을 해주어야함
  fw.write("안녕하세요 \n");
  fw.close();
}catch(IOException ie){	//write()예외
	System.out.println(ie.getMessage());
}
try{
	FileReader fr = new FileReader("C:\\java\\test.txt");
    while(true){
      int n = fr.read();
      if(n==-1) break;
      System.out.println((char)n);
    }
    fr.close();
}catch(FileNotFoundException fe){
	System.out.println("파일이 존재하지 않습니다.");
}catch(IOException ie){	//write()예외
	System.out.println(ie.getMessage());
}
``
profile
웹개발입문자

0개의 댓글