자바 File, FileInputStream, FileOutputStream에 대해서 알아보자.
File클래스
파일은 기본적이면서도 가장 많이 사용되는 입출력 대상이기 때문에 중요하다. 자바에서는 File클래스를 통해서 파일과 디렉토리를 다룰 수 있도록 하고있다. 그래서 File인스턴스는 파일일 수도 있고 디렉토리일 수도 있다.
File클래스 생성자
- File(String fileName) : 주어진 문자열(fileName)을 이름으로 갖는 파일을 위한 File인스턴스를 생성한다. 파일 뿐만 아니라 디렉토리도 같은 방법으로 다룬다. 여기서 fileName은 주로 경로(path)를 포함해서 지정해주지만, 파일 이름만 사용해도 되는데 이 경우 프로그램이 실행되는 위치가 경로(path)로 간주된다.
- File(String pathName, String fileName), File(File pathName, String fileName) : 파일의 경로와 이름을 따로 분리해서 지정할 수 있게 한 생성자. 이 중 두 번째 것은 경로를 문자열이 아닌 File인스턴스인 경우를 위해서 제공된 것이다.
해당 코드는 파일 경로로 생성자를 호출하고, dirs 배열에 dir.list()를 저장해 폴더에 있는 파일목록을 배열에 저장한다.
그리고 for문으로 해당 경로의 파일목록을 출력한다.
FileInputStream
FileInputStream은 파일에 입력을 하기 위한 스트림이다. 실제 프로그래밍에서 많이 사용되는 스트림 중의 하나이다.
FileInputStream클래스 생성자
- FileInputStream(File file) : 주어진 File객체가 가리키는 파일을 바이트 스트림으로 읽기 위한 FileInputStream객체를 생성한다.
- FileInputStream(String name) : 주어진 이름이 가리키는 파일을 바이트 스트림으로 읽기 위한 FileInputStream객체를 생성한다.
해당 코드는 FileInputStream 타입 fis참조변수에 path를 대입한 생성자로 초기화한다. data변수에 fis.read()를 대입하고 입력된 값들을 write(data)로 출력하며, 더 이상 입력되는 값이 없으면 -1이 반환되어 무한 반복문을 종료한다. 출력되는 값들은 해당 코드가 출력된다.
FileOutputStream
FileOutputStream은 파일에 입력을 하기 위한 스트림이다. 실제 프로그래밍에서 많이 사용되는 스트림 중의 하나이다.
FileOutputStream클래스 생성자
- FileOutputStream(File file) : 주어진 File객체가 가리키는 파일을 쓰기 위한 객체를 생성한다. 기존의 파일이 존재할 때는 그 내용을 지우고 새로운 파일을 생성한다.
- FileOutputStream(String name) : 주어진 이름의 파일을 쓰기 위한 객체를 생성한다.
- FileOutputStream(String name, boolean append) : 주어진 append 값에 따라 새로운 파일을 생성하거나 또는 기존의 내용에 추가한다.
해당 코드는 File 타입 참조변수 f에 경로를 대입한 생성자로 초기화한다. 그리고 FileOutputStream타입 참조변수 fos에 참조변수 f를 생성자 매개변수로 넣어 초기화한다. 이 과정은 주어진 파일에 바이트 단위로 기록하기 위한 것이다. data변수에 read()를 대입하고 입력된 값들을 fos.write(data)로 출력하며, 더 이상 입력되는 값이 없으면 -1이 반환되어 무한 반복문을 종료한다. 파일에 저장할 내용을 입력하면 result2.txt파일에 내용이 저장된다.