성장 일기/쌍용교육센터 / / 2023. 1. 10. 13:18

0110/Stream

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/ssangyonng.git에 올려두었습니다.

 

파일 출력

* FileOutputStream

  - 생성과 동시에 파일이 없다면 파일을 생성하고 파일이 있다면 덮어 쓴다.

  - binary 데이터를 기록할 수 있다.( 모든 데이터를 내보낼 수 있다. )

  - 속도가 빠름

 

* FileWriter

  - 생성과 동시에 파일이 없다면 파일을 생성하고 파일이 있다면 덮어 쓴다.

  - 문자열 데이터를 기록

  - 속도가 느림

 

* 스트림은 안 끊으면 누수가 발생하기 때문에  연결하는 것보다 끊는 게 중요하다.

 

FileOutputStream 사용법

// 1. 생성
FileOutputStream fos = new FileOutputStream( "파일 경로" );

// 파일 경로에서 디렉토리가 존재하지 않으면 error, 파일이 존재하면 덮어 쓰고 파일이 없으면 생성

// 2. 스트림에 파일로 기록할 내용을 쓴다.
fos.write( 값 );

// 3. 스트림에 기록된 내용을 목적지로 분출
fos.flush();

// 4. 스트림 끊기( 스트림에 기록된 내용을 목적지로 분출되고 연결이 끊어진다. )
fos.close();

 

FileWriter 사용법

// 1. 생성
// 파일 경로에서 디렉토리가 존재하지 않으면 error, 파일이 존재하면 덮어 쓰고 파일이 없으면 생성
BufferedWriter bw = new BufferedWriter( new FileWriter( "파일 경로" ) );

 // 2. 스트림에 파일로 기록할 내용을 쓴다.
bw.write( 문자열 );

// 3. 스트림에 기록된 내용을 목적지로 분출
bw.flush();

// 4. 스트림 끊기( 스트림에 기록된 내용을 목적지로 분출되고 연결이 끊어진다. )
bw.close();

 

파일 복사

  - 파일의 내용을 읽어 들여서( FileInputStream )

    모든 내용을 목적지로 분출한다.( FileOutputStream )

FileInputStream fis=new FileInputStream( "파일명" );

byte[] data=new byte[512]; //512byte를 저장할 데이터
int bitCnt = 0;
 
while( ( bitCnt=fis.read(data) ) != -1 ){ //데이터를 읽어들여 byte[]에 저장하고, 저장된 배열의 수를 받는다.
fos.write( data,0, bitCnt); // 출력 스트림에 byte의 배열을 읽어 들인 것 만큼 쓴다.
}

 

 

instance 쓰기 / 읽기( marshal Stream )

  - 객체( instance )는 Stream을 타고 나갈 수 없다.

  - 기본형 데이터형은 Stream을 타고 나갈 수 있다.

  - ObjectOutputStream을 사용하면 객체를 JVM 외부로 내보낼 수 있다.

  - 객체직렬화( marshal )가 될 수 있는 객체만 나갈 수 있다.( 일반 클래스는 객체직렬화가 되지 않는다. )

  - 객체 직렬화( marshal ) :  객체를 스트림을 타고 나갈 수 있도록 일정한 크기로 나누는 것

  - transient 직렬화 방지 키워드

 

 

'성장 일기 > 쌍용교육센터' 카테고리의 다른 글

0112/Socket, Thread  (0) 2023.01.12
0111/네트워크, 소켓 통신  (0) 2023.01.11
0109/Stream, File  (0) 2023.01.09
0106/예외 처리, Stream  (0) 2023.01.06
0105/Font, 예외 처리  (0) 2023.01.05
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유