자바

자바 파일 입출력 Java File 클래스 / FileInputStream 클래스 / FileOutputStream 클래스

알통몬_ 2017. 4. 6. 10:24
반응형



안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 


File 클래스 :

java.io 패키지에서 제공하고 파일 크기/ 파일 속성/ 파일 이름 등 파일의 다양한 정보를 얻어내는 기능과

파일 생성 및 삭제 기능을 제공합니다.  더불어 디렉토리를 생성하고 디렉토리에 존재하는 파일 리스트를

얻어내는 기능도 있습니다. 대신 파일을 읽거나 쓰는 기능은 없습니다.

File file = new File("파일 경로");

- 윈도우에서는 \ 나 / 를 디렉토리 구분자로 사용할 수 있고,

- 리눅스나 유닉스에선 / 를 사용합니다.


* File 객체를 생성했다고 하여도 파일이나 디렉토리가 생성되는 것은 아닙니다.

생성자 매개값으로 주어진 경로가 유효하지 않더라도, 컴파일 에러 / 예외가 발생하지 않습니다.

File 객체를 통해 해당 경로에 실제 파일이나 디렉토리가 있는지 확인하려면

exists()를 호출하면 됩니다. 존재하면 true를 존재하지 않으면 false를 리턴합니다.

boolean isExist = file.exists();

만약 리턴값이 false 라면 createNewFile(), mkdir(). mkdirs()로 파일이나 디렉토리를 생성할 수 있습니다.


예제


FileInputStrean 클래스 :

파일로부터 바이트 단위로 읽어올 때 사용하며 바이트 기반 스트림입니다.

바이트 단위로 읽어오므로 그림 / 오디오 / 비디오 / 텍스트 파일 등의 모든 종류를 읽어올 수 있습니다.


 - FileInputStream fileInputStream = new FileInputStream("파일 경로");

 - File file = new File("파일 경로");

   FileInputStream fileInputStream = new FileInputStream( file );


FileInputStream 객체가 생성될 때 파일과 직접 연결됩니다.

때문에 파일이 존재하지 않는다면 FileNotFoundException이 발생하므로

try - catch 문으로 예외 처리를 해주어야 합니다.

그리고 FileInputStream은 InputStream 의 하위 클래스이므로 사용 방법이 동일하고,

한 바이트를 읽기 위해 read()를 사용하거나 읽은 바이트를 byte배열에 저장하기 위해

read(byte[] b), read(byte[] b, int off, int len) 사용가능합니다.


예제)



FileOutputStream :

바이트 단위로 데이터를 저장할 때 사용하며 바이트 기반 출력 스트림입니다.

바이트 단위로 저장하므로 그림 / 오디오 / 비디오 / 텍스트 등 모든 종류의 데이터를 저장할 수 있습니다.


- FileOutputStream fileOutputStream  = new FileOutputStream("파일 경로");

- File file = new File("파일 경로");

 FileOutputStream fileOutputStream = new FileOutputStream(file);


* 해당 경로에 파일이 이미 존재한다면 => 데이터를 출력하면 파일을 덮어쓰게 되며 

기존의 파일 내용은 사라집니다. 때문에 기존의 파일 내용 끝에 데이터를 추가하고 싶을 경우

위 생성방법에서 생성자 두 번째 매개 값으로 true를 주면됩니다.

- FileOutputStream fileOutputStream  = new FileOutputStream("파일 경로", true);


FileOutputStream도 OutputStream의 하위 클래스이기 때문에 OutputStream과 사용 방법이 동일합니다.

한 바이트 저장을 위해 write()를, 바이트 배열을 한꺼번에 저장하기 위해

write(Byte[] b), write(Byte[] b, int off, int len) 사용가능.


예제)


이상입니다.

반응형