English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 튜토리얼

Java 흐름 제어

Java 배열

Java 상속적 객체(I)

Java 상속적 객체(II)

Java 상속적 객체(III)

Java 예외 처리

Java 리스트(List)

Java Queue(큐)

Java Map 집합

Java Set 집합

Java 입력/출력(I/O)

Java Reader/Writer

Java 다른 주제

Java FileReader 클래스

이 튜토리얼에서는 예제를 통해 Java FileReader 및 메서드를 배울 것입니다.

java.io 패키지의 FileReader 클래스는 파일에서 데이터를 읽을 수 있습니다(문자 단위로).

InputSreamReader 클래스를 상속했습니다.

FileReader를 공부하기 전에, 확실하게 이해해야 할 것은Java 파일

FileReader 생성

파일 리더를 생성하려면 먼저 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 메서드

FileReader 클래스는 Reader 클래스에 존재하는 다양한 메서드의 구현을 제공합니다.

read() 메서드

  • 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() 메서드

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() 메서드를 사용할 수 있습니다. close() 메서드를 호출하면, 리더를 통해 데이터를 읽을 수 없게 됩니다.

FileReader의 다른 메서드

메서드설명
ready()읽기 리더가 읽을 준비가 되었는지 확인합니다
mark()읽기 리더에서 읽은 데이터 위치를 태그합니다
reset()읽기 리더를 초기화하고, 리더에서 설정한 태그 위치로 돌아갑니다