파일 한글 처리

8bit stream과 16bit stream을 결합

1. File 생성
File file = new File("경로");

2. FileInputStream 생성
FileInputStream fis = new FileInputStream(file);

3. InputStreamReader 생성
InputStreamReader isr = new InputStreamReader(fis);

4. BufferedReader 생성
BufferedReader br = new BufferedReader(isr);

///////////////////////// 한 줄에 다 쓰기 //////////////////////////////

BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream (file)));

//////////////////////////////////////////////////////////////////////


5. 스트림에 연결될 파일의 내용이 있다면 읽어들인다.
String str = "";
while( (str = br.readLine()) != null ){
	str // 읽어들인 한 줄을 사용.(\n은 포함되지 않는다.)
}

6. 스트림의 연결을 끊는다.
br.close();

16bit Stream

1. 파일 생성
File file = new File("경로");

2. 파일과 연결하기 위한 stream생성
FileReader fr = new FileReader( file );

3. 줄 단위로 읽기 위한 Stream 생성
BufferedReader br = new BufferedReader( fr );

///////////////////////// 한 줄에 다 쓰기 //////////////////////////////

BufferedReader br = new BufferedReader( new FileReader (file));

//////////////////////////////////////////////////////////////////////


4. 스트림에 연결된 파일의 내용을 끝까지 읽어들인다.
String str = "";
while( (str = br.readLine()) != null ){
	str //줄 단위로 읽어들인 한 줄을 사용.
}

5. 스트림의 연결을 끊는다.
br.close();

try ~ with ~ resources

개발자가 연결객체를 사용하면 연결을 끊지 않았을 때, 메모리 누수(memory leak)이 발생.
누수를 막기 위해 개발자는 반드시 끊는 코드( close() 를 작성해야 한다. )
개발자가 close() 하지 않더라도 JVM이 알아서 close() 해준다.

* 모든 JDK버전에서 사용
BufferedReader br = null;
try{
	br = new BufferedReader( 
    new InputStreamReader( new FileInputStream (file)));
    
    스트림을 사용하는 코드
    
}finally{
	if( br != null ){br.close()}//연결을 반드시 끊기 위해서
}

* JDK1.7이상 버전에서 사용
try(
	BufferedReader br = new BufferedReader( 
    new InputStreamReader( new FileInputStream (file)))({
    
    스트림을 사용하는 코드
    
}catch( 예외처리클래스 ){
	예외 발생시 처리할 코드
}

출력스트림

  • Console 출력

파일 출력

JVM안에서 발생한 데이터를 File로 출력.
FileOutputStream, FileWriter가 제공. => 스트림을 생성하면 목적지에 파일이 존재하면 덮어쓴고, 파일이 존재하지 않으면 파일을 생성한다.
디렉토리는 생성할 수 없다.

1. 파일 생성
File file = new File("경로/파일명");

2. 스트림을 생성
FileOutputStream fos = new FileOutputStream( file );

3. 스트림에 파일로 저장할 내용을 쓴다.
int i = 65;
fos.write(i);

4. 스트림에 쓰여진 내용을 목적지로 분출한다.
fos.flush();

5. 연결끊기
fos.close();

문자열 출력

1. 파일 생성
File file = new File("경로/파일명");

2. 스트림을 생성
FileWriter fw = new FileWriter( file );

3. 스트림에 파일로 저장할 내용을 쓴다.
int i = 65;
fos.write(i);

4. 스트림에 쓰여진 내용을 목적지로 분출한다.
fos.flush();

5. 연결끊기
fos.close();

0개의 댓글