고래씌

[JAVA] 13-2. 입출력(IO) (File 클래스 ②) 본문

JAVA/JAVA 기초

[JAVA] 13-2. 입출력(IO) (File 클래스 ②)

고래씌 2023. 10. 23. 10:41

1. FileWriter

프로그램 ---> 외부매체(파일)
 
- FileWriter : 파일로 데이터를 2byte단위로 출력하는 스트림
 
- 참조변수 = new FileWriter(변수, true)     => 이어쓰기
 

package com.kh.chap03_char.model.dao;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileCharDao {

	// 프로그램  ---> 외부매체(파일)
	public void fileSave() {
		
		// FileWriter : 파일로 데이터를 2byte단위로 출력하는 스트림
		FileWriter fw = null;
		
		try {
			fw = new FileWriter("b_char.txt");
			
			fw.write("ABCDE");
			fw.write("이고래");

			char [] cArr = {'a','p','p','l','e'};
			fw.write(cArr);

			
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fw.close();    // flush()함수 자동 호출
			} catch (IOException e) {
				e.printStackTrace();
			}  

		}
		
	}
}

 
☞ fw.close() 를 주석처리하면 입력버퍼에는 들어가있지만 fw.close()를 해주지않으면 b_char.txt에는 내용이 안들어감
fw.flush() 를 이용하면 스트림 내부에 잔존하는 데이터를 외부매체로 내보내기 할 수 있다. b_char.txt 에는 내용이 들어가게됨
 

package com.kh.chap03_char.model.dao;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileCharDao {

	// 프로그램  ---> 외부매체(파일)
	public void fileSave() {
		
		// FileWriter : 파일로 데이터를 2byte단위로 출력하는 스트림
		FileWriter fw = null;
		
		try {
			fw = new FileWriter("b_char.txt");
			
			fw.write("ABCDE");
			fw.write("이고래");

			char [] cArr = {'a','p','p','l','e'};
			fw.write(cArr);
			
			fw.flush();  // 스트림내부에 잔존하는 데이터를 외부매체로 내보내기
			
		} catch (IOException e) {
			e.printStackTrace();
		} // finally {
//			try {
//				fw.close();    // flush()함수 자동 호출
//			} catch (IOException e) {
//				e.printStackTrace();
//			}  
//		}
		
	}
}

 

2. FileReader

프로그램 <--- 파일
 
- FileReader : 파일로부터 데이터를 2byte단위로 입력받는 스트림
 

	public void fileRead() {
		
		//FileReader : 파일로부터 데이터를 2byte단위로 입력받는 스트림
		FileReader fr = null;
		
		try {
			fr = new FileReader("b_char.txt");
			
//			System.out.println((char)fr.read());
//			System.out.println(fr.read());
//			System.out.println(fr.read());
			
			int value = 0;
			while((value = fr.read()) != -1) {
				System.out.print((char) value);
			}
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}