English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 예제를 통해 Java FileReader 및 메서드를 배울 것입니다.
java.io 패키지의 FileReader 클래스는 파일에서 데이터를 읽을 수 있습니다(문자 단위로).
InputSreamReader 클래스를 상속했습니다.
FileReader를 공부하기 전에, 확실하게 이해해야 할 것은Java 파일
파일 리더를 생성하려면 먼저 java.io.FileReader 패키지를 가져오아야 합니다. 패키지를 가져온 후, 이제 파일 리더를 생성하는 방법입니다.
1. 파일 이름 사용
FileReader input = new FileReader(String name);
이곳에서는 지정된 파일 이름에 연결된 파일 리더를 생성합니다.
2. 파일 객체 사용
FileReader input = new FileReader(File fileObj);
이곳에서는 파일 객체가 지정한 파일에 연결된 파일 리더를 생성합니다.
위 예제에서 파일 데이터는 특정 기본 문자编码으로 저장되었습니다.
하지만 Java 11파일에서 문자编码 유형을 지정할 수도 있습니다 (UTF-8또는UTF-16)
FileReader input = new FileReader(String file, Charset cs);
이곳에서는 Charset 클래스를 사용하여 파일 리더의 문자编码을 지정합니다.
FileReader 클래스는 Reader 클래스에 존재하는 다양한 메서드의 구현을 제공합니다.
read() - 파일 리더에서 단일 문자를 읽습니다
read(char[] array) - 파일 리더에서 문자를 읽고 지정된 배열에 저장합니다
read(char[] array, int start, int length) - 읽기 리더에서 length와 같은 문자 수를 읽고 start 위치에서 지정된 배열에 저장합니다
예를 들어, 이름이input.txt의 파일이 포함되어 있습니다.
This is a line of text inside the file.
파일을 읽는 FileReader를 사용하여 시도해 보겠습니다.
import java.io.FileReader; class Main { public static void main(String[] args) { //문자 배열을 생성합니다 char[] array = new char[100]; try { //FileReader를 사용하여 리더를 생성합니다 FileReader input = new FileReader("input.txt"); //문자를 읽습니다 input.read(array); System.out.println("Data in the file: "); System.out.println(array); // 파일 리더를 닫습니다 input.close(); } catch(Exception e) { e.getStackTrace(); } } }
출력 결과
파일의 데이터: This is a line of text inside the file.
위의 예제에서는 input이라는 파일 리더를 생성했습니다. 파일 리더는 파일과input.txt연결.
FileInputStream input = new FileInputStream("input.txt");
파일에서 데이터를 읽기 위해 read() 메서드를 사용했습니다.
getEncoding() 메서드는 파일에 저장된 데이터의 인코딩 유형을 얻을 수 있습니다. 예를 들어,
import java.io.FileReader; import java.nio.charset.Charset; class Main { public static void main(String[] args) { try { //기본 인코딩으로 FileReader를 생성합니다 FileReader input1 = new FileReader("input.txt"); //지정된 인코딩으로 FileReader를 생성합니다 FileReader input2 = new FileReader("input.txt", Charset.forName("UTF8")); //파일 읽기 리더의 문자编码을 반환합니다 System.out.println("input1의 문자编码: " + input1.getEncoding()); System.out.println("input2의 문자编码: " + input2.getEncoding()); //파일 리더를 닫습니다 input1.close(); input2.close(); } catch(Exception e) { e.getStackTrace(); } } }
출력 결과
input1의 문자 encoding: Cp1252 input2의 문자 encoding: UTF8
위의 예제에서는2개의 파일 리더를 생성했습니다. 각각의 이름은 input1와 input2
input1문자 encoding을 지정하지 않았습니다. 따라서 getEncoding() 메서드는 기본 문자 encoding을 반환합니다.
input2문자 encoding 지정UTF8따라서 getEncoding() 메서드는 지정된 문자编码을 반환합니다.
주의:Charset.forName() 메서드를 사용하여 문자编码 유형을 지정했습니다.
파일 리더를 닫기 위해 close() 메서드를 사용할 수 있습니다. close() 메서드를 호출하면, 리더를 통해 데이터를 읽을 수 없게 됩니다.
메서드 | 설명 |
---|---|
ready() | 읽기 리더가 읽을 준비가 되었는지 확인합니다 |
mark() | 읽기 리더에서 읽은 데이터 위치를 태그합니다 |
reset() | 읽기 리더를 초기화하고, 리더에서 설정한 태그 위치로 돌아갑니다 |