먼저 InputStreamReader와 FilEReader의 차이점을 소개하겠습니다. 특정 내용은 다음과 같습니다.
inputStreamReader 및 BufferedReader. 그 중 가장 중요한 클래스는 BYTE를 문자로 변환하기위한 브리지 인 InputStreamReader입니다. 생성자의 인코딩 메소드를 다시 설명 할 수 있습니다. 지정되지 않으면 GBK 등과 같은 기본 운영 체제의 기본 인코딩 방법이 채택됩니다.
Filereader 및 InputStreamReader는 인코딩 변환 (인코딩 메소드를 지정하거나 OS의 기본 인코딩을 사용)을 포함하며, 다른 플랫폼에서 갈라진 코드가 발생할 수 있습니다! FileInputStream은 바이너리 모드로 처리되며 코드가 없습니다.
FileInputStream 바이트 스트림은 바이트 바이트를 읽습니다.
Filereader 캐릭터 스트림은 문자로 하나씩 읽습니다.
bufferedReader bufreader = null; inputStreamReader isr = null; filereader fr = null; try {for (string filename : filenames) {method 1 : isr = new inputStreamReader (새 fileInputStream ( "d : /test.txt"), "utf-8"); bufreader = 새로운 버퍼드 리더 (ISR); 방법 2 : fr = new filereader ( "d : /test.txt"); bufreader = 새로운 버퍼드 리더 (FR); while (bufreader.ready ()) {// 1. 데이터 문자열의 각 행 Dataline = bufreader.readline (); }}입력 스트림과 리더의 차이점
java.io 아래에는 두 가지 추상 클래스가 있습니다 : InputStream 및 Reader
입력 스트림은 바이트 입력 스트림의 모든 클래스를 나타내는 슈퍼 클래스입니다.
독자는 캐릭터 스트림을 읽는 추상 수업입니다
InputStream은 텍스트 읽기가 아니라 바이트 스트림을 읽는다.
즉, char 배열 또는 문자열은 리더를 사용하여 읽히고 BYTE 배열은 InputStream을 사용하여 읽습니다.
두 슈퍼 클래스 사이의 근본적인 차이를 명확히 한 후 아래의 서브 클래스를 사용하는 것을 살펴 보겠습니다. 다음은 가장 일반적으로 사용되는 설명 중 몇 가지만 있습니다.
입력 스트림
| __fileInputStream
FileInputStream 파일 시스템의 파일에서 입력 바이트를 가져옵니다.
시공 방법 요약
FileInputStream (파일 파일)
파일 시스템의 파일 개체 파일에 의해 지정된 실제 파일에 대한 연결을 열어 FileInputStream을 만듭니다.
FileInputStream (Filedescriptor fdobj)
파일 시스템의 실제 파일에 대한 기존 연결을 나타내는 파일 디스크립터 fdobj를 사용하여 fileInputStream을 만듭니다.
fileInputStream (문자열 이름)
파일 시스템의 PathName 이름으로 지정된 실제 파일에 대한 연결을 열어 FileInputStream을 만듭니다.
리더
|-버퍼드 리더
| ___ inputStreamReader
| __filereader
BUFFEREDREADER : 문자 입력 스트림에서 텍스트를 읽고 개별 문자를 버퍼링하여 문자, 배열 및 라인을 효율적으로 읽을 수 있습니다.
시공 방법 요약
BufferedReader (독자)
기본 크기 입력 버퍼를 사용하는 버퍼 문자 입력 스트림을 만듭니다.
BufferedReader (Reader In, Int SZ)
지정된 크기 입력 버퍼를 사용하는 버퍼 문자 입력 스트림을 만듭니다.
BufferedReader (Java Platform SE 6)
BufferedReader의 가장 큰 기능은 버퍼 설정입니다. 일반적으로 독자가 작성한 모든 읽기 요청은 기본 문자 또는 바이트 스트림에 대한 해당 읽기 요청을 초래합니다. 버퍼링이 없으면 읽기 () 또는 readline ()에게 호출되는 각 호출은 파일에서 바이트를 읽고 문자로 변환하여 반환하여 매우 비효율적입니다.
BufferedReader를 사용하여 버퍼의 크기를 지정하거나 기본 크기를 사용할 수 있습니다. 대부분의 경우 기본값은 충분히 큽니다.
따라서 BufferedReader를 사용하여 Read () 작업이 비싸지 않은 모든 독자 (예 : Filereader 및 InputStreamReader)를 포장하는 것이 좋습니다.
예를 들어,
bufferedReader in = new bufferedReader (new filereader ( "foo.in"));
지정된 파일에 버퍼 입력.
inputStreamReader (Java Platform SE 6)
InputStreamReader는 바이트 스트림과 문자 스트림 사이의 브리지입니다. 지정된 숯을 사용하여 바이트를 읽고 문자로 디코딩합니다. 사용하는 문자 세트는 이름으로 지정되거나 명시 적으로 제공 될 수 있거나 플랫폼의 기본 문자 세트를 허용 할 수 있습니다.
시공 방법 요약
inputStreamReader (inputStream in)는 기본 문자 세트를 사용하는 inputStreamReader를 만듭니다. inputStreamReader (inputStream in, charset cs)는 주어진 문자 세트를 사용하는 inputStreamReader를 만듭니다. inputStreamReader (inputStream in, charSetDecoder dec)는 주어진 문자 세트 디코더를 사용하는 입력 스트리 프 리더를 만듭니다. inputStreamReader (inputStream in, String charSetName)는 지정된 문자 세트를 사용하는 inputStreamReader를 만듭니다.
inputStreamReader의 read () 메소드로의 각 호출은 기본 입력 스트림에서 하나 이상의 바이트를 읽습니다. 바이트에서 문자로 효과적인 변환을 가능하게하려면 기본 스트림에서 더 많은 바이트를 미리 읽을 수 있으며 현재 읽기 작업을 충족시키는 데 필요한 바이트를 초과합니다.
최대 효율을 달성하려면 BufferedReader 내부에서 입력 스트리 프 리더를 래핑하는 것을 고려하십시오. 예를 들어:
bufferedReader in = new bufferedReader (new inputStreamReader (System.In));
InputStreamReader의 가장 큰 기능은 다른 클래스에서는 불가능한 고정 인코딩 형식을 참조 할 수 있다는 것입니다. 시공 방법에서 볼 수 있습니다. 이것은 한자를 읽을 때 매우 유용합니다.
Filereader
1) Filereader 클래스 소개 :
inputStreamReader 클래스의 서브 클래스는 모든 메소드 (read () 등)가 부모 클래스 inputStreamReader로부터 상속됩니다.
2) inputStreamReader 클래스의 차이점 :
시공 방법 요약
filereader (파일 파일)
데이터를 읽는 파일이 주어진 새 Filereader를 만듭니다.
Filereader (Filedescriptor FD)
데이터를 읽을 수있는 제출 된 스크립터가 주어진 새 Filereader를 만듭니다.
Filereader (String filename)
데이터를 읽는 파일 이름이 주어지면 새 Filereader를 만듭니다.
이 클래스와 부모 클래스 inputStreamReader의 주요 차이점은 생성자이며 주요 차이점은 생성자입니다!
inputStreamReader의 생성자로부터 매개 변수는 입력 스트림 및 인코딩 메소드입니다. 인코딩 메소드를 지정하려면 inputStreamReader 클래스를 사용해야한다는 것을 알 수 있습니다. Filereader 생성자의 매개 변수는 FileInputStream과 동일하며, 이는 파일 개체 또는 경로를 나타내는 문자열입니다. 파일 객체 또는 문자열을 기반으로 파일을 읽으려면 filereader를 사용하는 것을 볼 수 있습니다.
나는 Filereader 서브 클래스의 기능 이이 작은 노동 분업에 있다고 생각합니다. 이 클래스와 부모 클래스 inputStreamReader의 주요 차이점은 생성자이며 주요 차이점은 생성자입니다!
inputStreamReader에서
생성자에서 파라미터는 입력 스트림 및 인코딩 방법입니다. 인코딩 메소드를 지정하려면 inputStreamReader 클래스를 사용해야한다는 것을 알 수 있습니다. Filereader 생성자의 매개 변수는 FileInputStream과 동일하며, 이는 파일 개체 또는 경로를 나타내는 문자열입니다. 파일 객체 또는 문자열을 기반으로 파일을 읽으려면 filereader를 사용하는 것을 볼 수 있습니다.
나는 Filereader 서브 클래스의 기능 이이 작은 노동 분업에 있다고 생각합니다.
두 가지 연결과 차이점
(1) 문자 및 바이트 :
FileInputStream 클래스는 바이너리 입력/출력을 사용하고 I/O 속도는 빠르고 효율적이지만 Read () 메소드는 BYTE (BAINE DATA)를 읽습니다. 이는 사람들이 읽을 수없는 바이트 (바이너리 데이터)를 읽습니다.이 파일의 문자에서 직접 작동 할 수는 없습니다 (바이트에서 작동해야 함).
독자 클래스는이 결함을 보완하고 텍스트 형식으로 입력/출력 할 수 있습니다. 예를 들어, while ((ch = filereader.read ())! = -1) 루프를 사용하여 파일을 읽을 수 있습니다. BufferedReader의 readline () 메소드를 사용하여 텍스트를 라인별로 읽을 수 있습니다.
(2) 인코딩
inputStreamReader, 바이트를 문자로 변환하기위한 브리지입니다. 생성자의 인코딩 메소드를 다시 설명 할 수 있습니다. 지정되지 않으면 GBK 등과 같은 기본 운영 체제의 기본 인코딩 방법이 채택됩니다.
Filereader 및 InputStreamReader는 인코딩 변환 (인코딩 메소드를 지정하거나 OS의 기본 인코딩을 사용)을 포함하며, 다른 플랫폼에서 갈라진 코드가 발생할 수 있습니다! FileInputStream은 바이너리 모드로 처리되며 코드가 없습니다.
따라서 인코딩 메소드를 지정할 때 InputStreamReader 클래스를 사용해야하므로 바이트를 문자로 변환하기위한 브리지입니다.
(3) 캐시 영역
BufferReader 클래스는 read () 작업이 비쌀 수있는 모든 독자 (예 : Filereader 및 InputStreamReader)를 감싸는 데 사용됩니다.
(4) 표준화 된 사용
위의 내용을 요약하고 더 나은 표준 사용법을 제시하십시오.
1) 파일 = 새 파일 ( "hello.txt");
fileInputStream in = new FileInputStream (file);
2) 파일 파일 = 새 파일 ( "hello.txt");
fileInputStream in = new FileInputStream (file); inputStreamReader inReader = new inputStreamReader (in, "utf-8"); bufferedReader bufReader = new bufferedReader (inReader);
3) 파일 = 새 파일 ( "hello.txt");
Filereader Filereader = New Filereader (파일); bufferedReader bufreader = new bufferedReader (filereader);