본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

바이트기반 보조스트림, 스트림의 기능을 향상시키거나 새로운 기능을 추가하다: FilterInputStream BufferedInputStream DataInputStream SequenceInputStream LineNumberInputStream ObjectInputStream PrintStream PushbackInputStream

보조스트림은 실제 데이터를 주고받는 스트림이 아니나 스트림의 기능을 향상시키거나 새로운 기능을 추가할 수 있다.

스트림을 먼저 생성한 뒤 이를 이용해 보조스트림을 생성해야한다.

예를들어 BufferedInputStream은 입력기능을 수행하는것처럼 보이나 실제 입력기능은 연결된 FileInputStream이 수행하고 보조스트림인 BufferedInputStream은 버퍼만을 제공한다.

 

 

 

FilterInputStream / FilterOutputStream
이 클래스들은 입력 또는 출력 스트림을 필터링하기 위한 방법을 제공한다. 

일부 메서드를 재정의하여 사용한다.

InputStream in = new FileInputStream("input.txt");
FilterInputStream filterIn = new BufferedInputStream(in);
int data = filterIn.read();

 

 

BufferedInputStream / BufferedOutputStream
이 클래스들은 입력 및 출력 스트림에 대한 버퍼링 기능을 제공하여 I/O 작업의 횟수를 줄이고 성능을 향상시킵니다.

OutputStream out = new FileOutputStream("output.txt");
BufferedOutputStream bufferOut = new BufferedOutputStream(out);
bufferOut.write("안녕하세요, 세상!".getBytes());
bufferOut.flush();

 

 

DataInputStream / DataOutputStream
이 클래스들은 이진 형식으로 Java 기본 데이터 유형을 읽고 쓰기 위한 메서드를 제공한다.

OutputStream out = new FileOutputStream("data.bin");
DataOutputStream dataOut = new DataOutputStream(out);
dataOut.writeInt(42);
dataOut.writeDouble(3.14);
dataOut.close();

 

 

SequenceInputStream
이 클래스는 여러 입력 스트림을 연결하여 하나의 입력 스트림으로 처리할 수 있도록 한다.

InputStream input1 = new FileInputStream("file1.txt");
InputStream input2 = new FileInputStream("file2.txt");
SequenceInputStream sequenceInput = new SequenceInputStream(input1, input2);
int data;
while ((data = sequenceInput.read()) != -1) {
 System.out.print((char) data);
}

 

 

LineNumberInputStream
이 클래스는 입력 스트림을 감싸서 읽은 줄의 수를 카운트한다.

InputStream in = new FileInputStream("input.txt");
LineNumberInputStream lineNumberInput = new LineNumberInputStream(in);
int data;
while ((data = lineNumberInput.read()) != -1) {
 System.out.println("줄 번호: " + lineNumberInput.getLineNumber() + ", 데이터: " + (char)data);
}

 

 

 

ObjectInputStream / ObjectOutputStream
이 클래스들은 객체를 스트림에 읽고 쓰기 위한 메서드를 제공한다.

OutputStream out = new FileOutputStream("object.dat");
ObjectOutputStream objectOut = new ObjectOutputStream(out);
objectOut.writeObject(new MyClass());
objectOut.close();

 

 

 

PrintStream
이 클래스는 객체의 형식화된 표현을 출력 스트림에 인쇄하기 위한 메서드를 제공한다.

OutputStream out = new FileOutputStream("output.txt");
PrintStream printStream = new PrintStream(out);
printStream.println("안녕하세요, 세상!");
printStream.close();

 

 

 

PushbackInputStream
이 클래스는 스트림에 바이트를 "되돌리는" 기능을 제공하여 앞으로 읽고 필요에 따라 바이트를 되돌릴 수 있도록 한다.

이는 입력 데이터를 미리 확인하고 필요에 따라 데이터를 처리하는 경우에 유용하다.

InputStream in = new FileInputStream("input.txt");
PushbackInputStream pushbackInput = new PushbackInputStream(in);
int data = pushbackInput.read();
pushbackInput.unread(data); // 읽은 바이트 되돌리기