[Java] 파일 입출력

Java 2021. 1. 27. 09:19

- @참고: csw7432.tistory.com/entry/Java-Input-Output-Stream

왜 FileOutputStream을 BufferedOutputStream에 담아서 처리하는가.

버퍼란
데이터를 전송하는 상호간의 장치에서 고속의 장치와 저속의 장치 간의 속도 차이로 인해 저속의 장치가 작업을 추리하는 동안 고속의 장치가 기다려야 하는 현상을 줄여주는 기술이다.

IF 버퍼를 사용하지 않는다면
컴퓨터는 프린터가 인쇄를 끝낼 때 까지 아무런 작업을 할 수 없게 된다.

IF 버퍼를 사용한다면
컴퓨터에서 전송한 데이터가 버퍼에 저장되어 프린터는 컴퓨터로부터 직접 데이터를 받는 것이 아니라, 버퍼에서 데이터를 조금씩 읽어서 출력 하므로 컴퓨터는 버퍼로 전송작업을 마치고 프린터가 출력을 하는 동안 다른 작업을 할 수 있게 되는 것 이다.

Finally
버퍼는 각 장치나 프로세스가 상대방에 의해 정체되지 않고 잘 동작 할 수 있도록 해주는 놈이다.

Reference
"데이터의 중간 저장소" 라는 측면에서 버퍼는 캐시와 마찬가지이지만, 캐시가 어떤 작업의 속도를 증진시키기 위해 존재하는데 비해, 버퍼는 개별 작업들 간의 협동을 지원 하기 위해 존재한다는 차이가 있다.

출처: csw7432.tistory.com/entry/Java-Input-Output-Stream

 

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
 
public class BufferedOutputStream_SW {
    public static void main(String[] args)
    {
        FileOutputStream sw_stream = null;
        try
        {
            sw_stream = new FileOutputStream("SWTest");
            byte receive[] = {'C','H','O','I'};
            
            // 스스로 파일에 접근을 할수 없기때문에 FileOutputStream 사용하여 BufferedOutputStream 객체를 선언 / 생성
            // 여기서 특이한 점은 임시로 저장할 버퍼의 크기를 마음대로 조절이 가능하다는 점이다
            BufferedOutputStream b_out_stream = new BufferedOutputStream(sw_stream,1024);
            // "1024" 크기로 제 마음대로 버퍼의 크기를 잡아주었다
            // 즉, 파일에 데이터를 쓰기 위해서는 1024가 모여야 보조기억장치에 접근하여 쓰게 된다
            
            b_out_stream.write(receive);
            // "write()" 메소드는 FileOutputStream과 동일
            
            b_out_stream.close(); // 이 부분은 이제 필수 부분인걸 알것이다
            sw_stream.close();
        }
        catch(FileNotFoundException e)
        {
            e.printStackTrace();
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }
}


출처: https://csw7432.tistory.com/entry/Java-Input-Output-Stream [최느님 프알못]

'Java' 카테고리의 다른 글

[Java] LocalDateTime, Timestamp 변환  (0) 2021.02.26
[Java] Set to List, List to Set  (0) 2021.02.25
[Java] Optional 사용법  (0) 2021.02.19
[java] url 주소 가져오기  (0) 2020.11.11
Interface Comparable vs Interface Comparator  (0) 2020.01.07
블로그 이미지

uchacha

개발자 일지

,