문자기반 스트림을 가지고 입출력해보기!!
- 문자스트림 : 데이터를 2바이트 단위로 전송하는 통로다(넓은통로)
- 기반스트림 : 외부매체와 직접적으로 연결되는 통로다.
XXXReader : 입력용 스트림
XXXWriter : 출력용 스트림
// 프로그램 -----------> 파일 (출력)
public class FileCharDao {
public void fileSave() {
// FileWriter : 파일로 데이터를 2바이트 단위로 출력할 수 있는 스트림
FileWriter fw = null;
try {
// 1. FileWriter 객체생성
fw = new FileWriter("b_char.txt"/* ,true */);// 해당 파일이 없으면 새로만들고 연결 / 있으면 그냥 연결만
// 2. write 메소드 이용해서 데이터 출력
// 2byte단위로 데이터 전송
fw.write("와! IO 재밌다...ㅎ"); // 실제로는 해당 문자열의 한글자씩 전송되는 개념
fw.write(' ');
fw.write('A');
fw.write("\n");
char[] arr = { 'a', 'p', 'p', 'l', 'e' };
fw.write(arr);
} catch (IOException e) {
e.printStackTrace();
} finally {
// 3. 다 사용한 스트림 반납!
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 프로그램 <-------- 파일(입력)
public void fileRead() {
// FileReader : 파일로 부터 데이터를 2바이트 단위로 입력받을 수 있는 스트림
FileReader fr = null;
try {
// 1. FileReader 객체 생성
fr = new FileReader("b_char.txt"); // 여기서는 알아서 만들어지는게 아님
// 2. read 메소드를 이용해서 읽어들이자(정수값)
// 파일의 끝을 만나는 순간 -1 출력
// System.out.println((char)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();
}
}
}
}
'JAVA' 카테고리의 다른 글
Collection_list (0) | 2023.12.14 |
---|---|
IO_assist (0) | 2023.12.14 |
IO_byte (0) | 2023.12.13 |
IO_file (0) | 2023.12.13 |
Exception(예외)_CheckedException (0) | 2023.12.13 |