입출력 스트림과 버퍼 스트림

입출력 스트림

입력 스트림 : 키보드나 마우스(입력장치)로부터 자바 프로그램으로 데이터를 전달
출력 스트림 : 모니터나 스피커(출력장치)에 데이터 출력

스트림 종류

바이트 스트림(Byte) : 입출력되는 데이터를 단순 바이트로 처리한다 ex) 이미지, 사진, 동영상
문자 스트림(String) : 문자만 입출력하는 스트림  ex) 텍스트 파일

스트림 기능

바이트 스트림(입/출력) : 바이트 단위의 바이너리 값을 읽고 쓰는 스트림 클래스 종류

1. InputStream / OutputStream (interface)
2. FileInputStream / FileOutputStream
3. DataInputInputStream / DataInputOutputStream

*바이너리 파일의 값을 저장하고 읽으면 저장했던 그대로의 모습이 남아있지만 3번 클래스의 경우, 바이너리 형태로 바꿔 저장된다


=========[ InputStream ]============
파일을 읽어오는 방법
FileInputStream fin = new FileInputStream("파일경로");

=========[ OutputStream ]============
파일을 생성+읽어오는 법
FileInputStream fout = new FileInputStream("파일경로");

파일에 내용을 저장하는 법
fout.write(byte b);

파일을 닫는 방법
fout.close();


문자 스트림(입/출력) : 유니 코드 문자를 입출력하는 스트림

클래스 종류
1. Reader / Writer (interface)
2. InputStreamReader / OutputStreamWriter
3. FileReader / FileWriter


=========[ Reader ]============
파일을 읽어오는 방법
FileReader fin = new FileReader("파일경로");

인코딩 방식이 다른 경우 읽어오는 방법
FileInputStream fin = new FileInputStream("파일경로");
InputStreamReader in = new InputStreamReader(fin , "인코딩유형"); // ex 한글파일 인코딩 유형 : "MS949"


=========[ Writer ]============
파일을 생성+불러오는 방법
FileWriter fout = new FileWriter("파일경로");

파일에 내용을 저장하는 메소드 
문자 -> fout.write('A');
문자열 -> fout.write("ABCDEFGHIJ", 0, 10);

파일을 닫는 메소드 
fin.close();


버퍼 스트림

입출력 데이터를 일시적으로 저장하는 버퍼를 이용하여 입출력 효율 개선
이외엔 입출력 스트림과 유사하다

버퍼 스트림의 종류

바이트 버퍼 스트림 : BufferedInputStream / BufferedOutputStream
문자 버퍼 스트림 : BufferedReader / BufferedWriter

버퍼 스트림의 특이점

1. flush() 메서드로 모아두었던 버퍼를 파일에 저장할 수 있음
2. close() 자동적으로 flush()가 실행됨

+ Recent posts