"안녕, 아미고, 다시 한 번."

"안녕하세요, Rishi. 오늘 수업은 무엇에 관한 것입니까?"

"오늘은 독자와 작가에 대해 이야기하겠습니다."

"하지만 Rishi, 나는 이미 그들에 대해 거의 모든 것을 알고 있습니다!"

"반복은 배움의 어머니다."

"음. 알았어."

" ReaderWriter 는 InputStreamOutputStream 과 유사 하지만 바이트가 아닌 문자로 작동합니다. 때로는 바이트 스트림이라고 하는 InputStream  및  OutputStream 과 달리  문자 스트림이라고도 합니다."

"하나는 문자용이고 다른 하나는 바이트용입니다. 기억합니다."

"그뿐만이 아닙니다. 이 클래스는 텍스트 및 문자열과 함께 작동하도록 특별히 설계되었습니다. 오늘 우리는 이러한 추상 클래스의 두 가지 클래식 구현인 FileReaderFileWriter를 살펴보겠습니다 ."

"다음은 FileReader 클래스 의 메서드입니다 ."

방법 설명
int read() 스트림에서 한 문자를 읽고 반환합니다.
int read(char cbuf[], int offset, int length) 문자 배열을 읽고 읽은 문자 수를 반환합니다.
boolean ready() 스트림에서 읽을 수 있으면 true를 반환합니다.
void close() 입력 스트림을 닫습니다.
int read(java.nio.CharBuffer target) 문자 집합을 버퍼로 읽습니다.
int read(char cbuf[]) 문자 배열을 읽습니다.
long skip(long n) 스트림에서 n자를 건너뜁니다.
String getEncoding() 스트림의 현재 인코딩을 반환합니다.

"음, 거의 다 알고 있습니다. 하지만 FileWriter는 어떻습니까?"

방법 설명
void write(int c) 스트림에 한 문자를 씁니다.
void write(char cbuf[], int off, int len) 스트림에 문자 배열을 씁니다.
void write(char cbuf[]) 스트림에 문자 배열을 씁니다.
void write(String str, int off, int len) 문자열의 일부를 스트림에 씁니다.
void write(String str) 스트림에 문자열을 씁니다.
void flush() 메모리에 캐시된 모든 것을 디스크에 기록합니다.
void close() 스트림을 닫습니다.
String getEncoding() 스트림의 현재 인코딩을 반환합니다.

"나도 알아!"

"멋지네요. 그럼 흥미로운 예를 하나 봅시다. 나중에 디에고가 당신에게 더 많은 일을 줄 것입니다."

"파일을 한 줄씩 어떻게 읽나요? 코드를 작성할 수 있나요?"

"쉽게 봐:"

암호
// Create a list for storing the lines
List<String> list = new ArrayList<String>();

// Open the file
File file = new File("c:/document.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));

// As long as the file isn't empty, read from it
while (reader.ready())
{
 list.add(reader.readLine());
}

// Close the file
reader.close();

"음. 나쁘지 않아."

"나쁘지 않죠? 모두 단순하고 아름다워요. Rishi 인정하세요. 저는 이미 I/O 스레드에 대한 뛰어난 숙달력을 가지고 있습니다. 여기서 개선할 수 있는 점은 무엇입니까?"

"음, 예를 들어 다음과 같이 할 수 있습니다."

리시의 코드
File file = new File("c:/document.txt");

List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());

"흠. 그게 더 짧네요. 그리고 오늘 당신은 이 모든 방법에 대해 저에게 말했습니다. 다시 작업하겠습니다. 강의 감사합니다, Rishi."

"행운을 빌어요, 아미고."