본문 바로가기

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

JAVA

자동 플러시 auto flush, 버퍼가 가득차거나 출력시 전송한다


활성화시 버퍼가 가득 차거나 개행 문자가 출력될 때마다 버퍼를 비우고 데이터를 목적지로 전송한다.
데이터가 실시간으로 출력되므로, 중요한 데이터를 놓치지 않고 즉시 확인할 수 있으나 
성능 저하가 발생할 수 있으므로 주의해야 한다.

 

예를 들어, `PrintStream` 생성자에서 `autoFlush` 매개변수를 사용하여 자동 플러시 기능을 설정할 수 있다.
일반적으로 `System.out`은 자동 플러시가 활성화되어 있다.

https://standout.tistory.com/53

 

표준입출력, System.in, System.out, System.err

I/O Input과 Output 입력과 출력, 입출력 컴퓨터 내부, 외부 장치와 프로그램간의 데이터를 주고받는것. 표준 스트림(standard streams) 컴퓨터 시스템의 기본 구성 요소 컴퓨터 프로그램과 그 환경(일반

standout.tistory.com

 

 

 

아래 코드를 이해하자.

`printStream1`은 자동 플러시가 활성화되어 있으므로 
"Hello, world!" 문자열을 출력할 때마다 자동으로 파일에 출력된다.
반면에 `printStream2`는 자동 플러시가 비활성화되어 있으므로 버퍼가 가득 찰 때까지 데이터가 버퍼에 유지되고, 
명시적으로 flush() 메서드를 호출하거나 close() 스트림을 닫을 때에만 데이터가 파일에 출력된다.

import java.io.*;

public class AutoFlushExample {
    public static void main(String[] args) {
        try {
            // 파일에 데이터를 출력하는 PrintStream 생성, 자동 플러시 활성화
            PrintStream printStream1 = new PrintStream(new FileOutputStream("output1.txt"), true);
            // 파일에 데이터를 출력하는 PrintStream 생성, 자동 플러시 비활성화
            PrintStream printStream2 = new PrintStream(new FileOutputStream("output2.txt"), false);

            // 데이터 출력
            printStream1.println("Hello, world!"); // 자동 플러시 발생
            printStream2.println("Hello, world!"); // 자동 플러시 없음

            // 스트림 닫기
            printStream1.close();
            printStream2.close(); // close() 를 호출하지 않고 프로그램이 종료된다면, 버퍼에 있는 데이터는 쓰이지 않고 손실될 수 있다.
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}