본문 바로가기

JAVA

IO_char

문자기반 스트림을 가지고 입출력해보기!!

 

- 문자스트림 : 데이터를 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