앞서 바이트기반 스트림에 대해 배웠다.
https://standout.tistory.com/1470
https://standout.tistory.com/1477
그중 InputStream과 OutputStream은 바이트기반 스트림의 조상이었는데,
https://standout.tistory.com/1473
https://standout.tistory.com/1474
Reader Writer또한 문자기반 스트림에서 같은역할을 한다고 이해하자.
아래는 Reader의 메서드이다.
byte배열대신 char배열을 사용한다는 것 외에는 다르지않다.
abstract void close(): 스트림을 닫는다.
void mark(int readlimit): 현재 위치를 표시하고 나중에 `reset()` 메서드를 호출해 돌아갈 수 있도록 한다.
boolean markSupported(): `mark()` 및 `reset()` 메서드의 지원 여부를 나타낸다.
int read(): 한 문자를 읽고 해당 문자의 ASCII 값을 반환한다.
int read(char[] c): 주어진 문자 배열에 데이터를 읽고, 읽은 문자 수를 반환한다.
abstract int read(char[] c, int off, int len): 주어진 길이만큼 문자를 읽고, 시작 오프셋부터 읽은 문자 수를 반환한다.
int read(CharBuffer target): 문자 버퍼로부터 문자를 읽고, 읽은 문자 수를 반환한다.
boolean ready(): 스트림이 읽을 수 있는지 여부를 나타내는 값을 반환한다.
long skip(long n): 지정된 수의 문자를 건너뛴다.
import java.io.*;
public class FileReaderExample {
public static void main(String[] args) {
try {
// 파일에서 데이터를 읽기 위한 FileReader 생성
FileReader reader = new FileReader("data.txt");
// markSupported() 메서드를 사용하여 mark()와 reset() 메서드의 지원 여부 확인
boolean isMarkSupported = reader.markSupported();
System.out.println("Mark Supported: " + isMarkSupported);
// mark() 메서드를 사용하여 현재 위치 표시
reader.mark(100);
// read() 메서드를 사용하여 한 문자씩 읽어 출력
System.out.println("Reading characters one by one:");
int data;
while ((data = reader.read()) != -1) {
System.out.print((char) data);
}
System.out.println(); // 줄바꿈
// reset() 메서드를 사용하여 이전에 표시한 위치로 돌아가기
reader.reset();
// read(char[] c) 메서드를 사용하여 문자 배열에 데이터 읽기
char[] buffer = new char[10];
int numChars = reader.read(buffer);
System.out.println("\nReading characters into buffer:");
System.out.println(buffer); // 문자 배열 전체 출력
System.out.println("Number of characters read: " + numChars);
// read(char[] c, int off, int len) 메서드를 사용하여 일부 문자 읽기
int offset = 3;
int length = 5;
char[] partialBuffer = new char[length];
int partialChars = reader.read(partialBuffer, offset, length);
System.out.println("\nReading partial characters into buffer:");
System.out.println(partialBuffer); // 일부 문자열 출력
System.out.println("Number of partial characters read: " + partialChars);
// ready() 메서드를 사용하여 스트림이 읽을 수 있는지 확인
boolean isReady = reader.ready();
System.out.println("\nIs reader ready? " + isReady);
// skip(long n) 메서드를 사용하여 지정된 수의 문자를 건너뛰기
long charsSkipped = reader.skip(5);
System.out.println("\nSkipped characters: " + charsSkipped);
// 스트림 닫기
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
[출력결과]
Mark Supported: true
Reading characters one by one:
This is some text.
Reading characters into buffer:
This is so
Number of characters read: 10
Reading partial characters into buffer:
s so
Number of partial characters read: 5
Is reader ready? true
Skipped characters: 5
'JAVA' 카테고리의 다른 글
파일로부터 텍스트 데이터를 읽고, 파일에 쓰다 FileReader와 FileWriter (0) | 2024.04.11 |
---|---|
문자기반스트림 Writer의 메서드 append() close() flush() write() (0) | 2024.03.21 |
PrintStream 다양한 형태로 출력하다 PrintStream() checkError() print() println() printf() 포맷지정자 (0) | 2024.03.21 |
자동 플러시 auto flush, 버퍼가 가득차거나 출력시 전송한다 (0) | 2024.03.21 |
SequenceInputStream 두 개의 입력 스트림을 연결하다 (0) | 2024.03.21 |