Java Language
독자와 작가
수색…
소개
독자와 작성자 및 해당 하위 클래스는 텍스트 / 문자 기반 데이터에 대한 간단한 I / O를 제공합니다.
BufferedReader
소개
BufferedReader
클래스는 두 가지 주요 용도로 사용되는 다른 Reader
클래스의 래퍼입니다.
BufferedReader
는 랩 된Reader
대해 버퍼링을 제공합니다. 이를 통해 응용 프로그램은 과도한 I / O 오버 헤드없이 한 번에 하나씩 문자를 읽을 수 있습니다.BufferedReader
는 한 번에 한 줄씩 텍스트를 읽는 기능을 제공합니다.
BufferedReader 사용의 기본 사항
BufferedReader
를 사용하는 일반적인 패턴은 다음과 같습니다. 먼저, 문자를 읽으려는 Reader
를 얻습니다. 다음으로 Reader
를 감싸는 BufferedReader
를 인스턴스화합니다. 그런 다음 문자 데이터를 읽습니다. 마지막으로 랩핑 된`Reader를 닫는 BufferedReader
를 닫는다. 예 :
File someFile = new File(...);
int aCount = 0;
try (FileReader fr = new FileReader(someFile);
BufferedReader br = new BufferedReader(fr)) {
// Count the number of 'a' characters.
int ch;
while ((ch = br.read()) != -1) {
if (ch == 'a') {
aCount++;
}
}
System.out.println("There are " + aCount + " 'a' characters in " + someFile);
}
이 패턴을 모든 Reader
적용 할 수 있습니다.
노트:
우리는 Java 7 (또는 그 이상)의 try-with-resources 를 사용하여 기본 독자가 항상 닫혀 있는지 확인했습니다. 이렇게하면 잠재적 인 리소스 유출을 피할 수 있습니다. 이전 버전의 Java에서는
finally
블록에서BufferedReader
를 명시 적으로 닫습니다.try
블록 안의 코드는FileReader
에서 직접 읽는 경우에 사용할 코드와 거의 동일합니다. 실제로,BufferedReader
는 랩하는Reader
와 완전히 같은 기능을합니다. 차이점은 이 버전이 훨씬 더 효율적이라는 것입니다.
BufferedReader 버퍼 크기
BufferedReader.readLine () 메서드
예 : 파일의 모든 행을 목록으로 읽음
이 작업은 파일의 각 행을 가져 와서 List<String>
추가하여 수행됩니다. 그런 다음 목록이 반환됩니다.
public List<String> getAllLines(String filename) throws IOException {
List<String> lines = new ArrayList<String>();
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
String line = null;
while ((line = reader.readLine) != null) {
lines.add(line);
}
}
return lines;
}
Java 8은 lines()
메소드를 사용하여보다 간결한 방법을 제공합니다.
public List<String> getAllLines(String filename) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
return br.lines().collect(Collectors.toList());
}
return Collections.empty();
}
StringWriter 예제
Java StringWriter 클래스는 문자열을 생성하는 데 사용할 수있는 문자열 버퍼의 출력을 수집하는 문자 스트림입니다.
StringWriter 클래스는 Writer 클래스를 확장합니다.
StringWriter 클래스에서는 네트워크 소켓 및 파일과 같은 시스템 리소스가 사용되지 않으므로 StringWriter를 닫을 필요가 없습니다.
import java.io.*;
public class StringWriterDemo {
public static void main(String[] args) throws IOException {
char[] ary = new char[1024];
StringWriter writer = new StringWriter();
FileInputStream input = null;
BufferedReader buffer = null;
input = new FileInputStream("c://stringwriter.txt");
buffer = new BufferedReader(new InputStreamReader(input, "UTF-8"));
int x;
while ((x = buffer.read(ary)) != -1) {
writer.write(ary, 0, x);
}
System.out.println(writer.toString());
writer.close();
buffer.close();
}
}
위의 예는 BufferedReader를 사용하여 스트림에서 파일 데이터를 읽는 간단한 예제 인 StringWriter를 알 수 있도록 도와줍니다.