앞서 바이트 기반 스트림을 익혔다 5.28
https://notion6780.tistory.com/94
java) java 입출력 I/O, 키보드 입력스트림
⭐자바 입출력 I/Oinput/output데이터를 읽고 쓰는 기능을 제공한다파일, 네트워크, 콘솔 등 다양한 소스와 대상 간 데이터를 주고받는다. 먼저 I/O 시스템은 크게 네 가지 주요 구성 요소로 나눈다
notion6780.tistory.com
바이트 기반 스트림 예제
https://notion6780.tistory.com/95
java) java 파일 입력스트림, 출력스트림 예제
예제)txt 파일로부터 입력스트림을 받아봤다.public class MyFileInputStream { public static void main(String[] args) { //파일을 바이트 단위로 읽어들이는 방법 FileInputStream in = null; int readData; try { in = new FileInputStr
notion6780.tistory.com
여기서는 문자 기반 스트림에 대해 기술한다.
⭐문자 기반 스트림
이미지, 비디오, 실행파일 등을 다룰 수 있다.
일반적으로 문자 기반 스트림을 쓰는 것이 편하다.
바이트 기반 스트림을 이용하려면 형변환에 유니코드..
해야할 일이 많아 불편하다.
더 편리한 문자 기반 스트림을 알아본다.
✨ 바이트 기반 스트림의 이름 형태
inputStream(System.in), OutputStream(System.out)
✨ 문자 기반 스트림의 네이밍 형식
xxxReder, xxxWriter
ex) InputStreamReader 의 read() 메서드는
하나의 문자를 읽어서 그 문자의 유니코드 (utf-8,utf-16) 로 정수값을 반환한다.
예제)
키보드에서 문자기반 스트림을 사용해 코드로 데이터를 읽어보자
public static void main(String[] args) {
try(InputStreamReader reader = new InputStreamReader(System.in);
PrintWriter writer = new PrintWriter(System.out, true)){
System.out.println("텍스트를 입력하세요(종료:Ctr+D)");
// int charCode = reader.read();
// System.out.println("===== ===== =====");
// System.out.println((char)charCode);
int charCode;
while ((charCode = reader.read()) != -1) {
//System.out.println((char)charCode);
writer.println((char) charCode);
}
// 입력된 문자를 콘솔에 출력하고 버퍼를 즉시 비운다
writer.flush();//즉시출력
} catch (IOException e) {
/* ex) 키보드 입력오류
콘솔 출력 오류 등이 여기서 catch 된다. */
System.out.println("입출력중 오류 발생");
}//try-catch
}//main
예제)
문자 기반 스트림을 사용해서
문자열을 파일에 입력하고
그 파일을 다시 읽어오는 코드를 작성해보자
/* 파일에 텍스트를 쓰는 함수, 문자 기반 스트림 사용 */
public static void writeToFile(String fileName) {
/* FileWriter는 문자 기반 스트림으로 텍스트를 파일에 기록할 수 있다 */
try (FileWriter writer = new FileWriter(fileName)) {
//파일에 기록할 텍스트 선언
String text = "자바 문자 기반 스트림 예제\n";
writer.write(text); //파일이 없다면 생성한 뒤 텍스트 입력
writer.write("추가 문자열");
//스트림 비우기
writer.flush();
System.out.println("텍스트를 성공적으로 기록했다");
} catch (IOException e) {
System.out.println("파일을 쓰던 중 오류 발생:" + e.getMessage());
}//try-catch
}//writeToFile
/* 파일에서 텍스트를 읽어오는 함수 */
public static void readFromFile(String FileName) {
/* FileReader 는 문자기반스트림이다 파일에서 텍스트를 읽는다 */
try(FileReader reader = new FileReader(FileName)){
/* read() 메서드는 한 문자씩 읽어 유니코드로 정수값 반환한다 */
//파일에 모든 텍스트를 읽을 수 있도록 코딩
int charCode;
while ((charCode = reader.read()) != -1) {
System.out.print((char)charCode);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}//readFromFile
테스트코드
public static void main(String[] args) {
//파일에 문자열 입력
writeToFile("basic_output.txt");
//파일에서 텍스트 읽기
// readFromFile("basic_output.txt");
}//main
txt파일이 생성되고 문자열 입력에 성공했다
public static void main(String[] args) {
//파일에 문자열 입력
// writeToFile("basic_output.txt");
//파일에서 텍스트 읽기
readFromFile("basic_output.txt");
}//main
파일에 적힌 문자열을 읽어와 콘솔창에 출력해봤다.