JAVA 유용한 클래스
(JAVA)문자 기반 스트림 (키보드,콘솔,파일) -16
mynote6676
2025. 5. 29. 18:55
| 문자 기반 + 키보드 , 콘솔에 대한 입출력 예제
========================
사전 기반 지식
========================
InputStream(System.in), OutputStream(System.out) 메서드 안에 System.in이 들어갈 수 있는 이유
이름 | 타입 | 역활 |
System.in | InputStream 타입 | 키보드 입력 등 표준 입력 스트림 |
System.out | PrintStream 타입 | 콘솔 출력 등 표준 출력 스트림 |
즉, System.in 은 입력 스트림(InputStream) 객체고,
System.out 은 출력 스트림(OutputStream의 하위 타입인 PrintStream)객체야.
그러면 왜 InputStream(System.in)처럼 쓸 수 있냐?
마찬 가지로 System.out도
핵심 요약
System.in은 InputStream 타입, System.out은 OutputStream의 하위 타입이기 때문에,
해당 타입을 받는 생성자나 메서드에 인자로 전달할 수 있는 것!
package ch03;
import java.io.*;
/**
* 바이트 단위 스트림에 이름 형태
* InputStream(System.in), OutputStream(System.out)
* 문자 기반 스트림에 이름 형태
* (xxx)Reader, (xxx)Writer (문자 기반 형태 네이밍 형식)
*/
public class KeyboardConsoleStream {
public static void main(String[] args) {
/**
*InputStreamReader dml read() 메서드는 하나의 문자를 읽어서
*그 문자의 유니코드(UTF-8, UTF-16) 값으로 (정수값) 반환합니다.
*/
// 프로그램 목표 : 키보드에서 문자 기반에 스트림을 사용해서 코드로 데이터를 읽어 보자.
// PrintWriter(OutputStream out, boolean autoFlush) autoFlush--> 자동의 비워준다
try(InputStreamReader reader = new InputStreamReader(System.in);
PrintWriter writer = new printWriter(System.out,ture)
) {
System.out.println("텍스트를 입력하세요(종료 하려면 ctrl + 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);
}
/**
*입력된 문자를 콘솔에 출력을 하는데 버퍼는 즉시 비움
* intellij에서 잘 작동안됨
*/
writer.flush(); // 즉시 출력
} catch (IOException e) {
/**
* 예: 키보드 입력 오류, 콘솔 출력오류가 여기서 catch 됨
*/
System.out.println("입출력중 오류 발생");
}
} // end of main
}
| 문자 기반 + 파일 입출력 예제 코드
package ch03;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileStreamBasic {
public static void main(String[] args) {
// 함수 호출
// writeToFile("basic_output.txt");
// 함수 호출 - 파일에서 텍스트 읽기
readFromFile("basic_output.txt");
} // end of 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());
}
} // end of writeToFile
public static void readFromFile(String fileName) {
/**
* FileReader 는 문자 기반 입력 스트림으로, 파일에서 텍스트를 읽음.
*/
try(FileReader reader = new FileReader(fileName)) {
// read() 메서드는 한 문자씩 읽어 유니코드 값(정수)로 반환 한다.
// int charCode = reader.read();
// System.out.println(charCode);
// System.out.println((char) charCode);
// 파일에 모든 텍스트를 읽을 수있도록 코딩을 하세요 , -1 은 파일의 끝을 의미한다.
int charCode;
while ( (charCode = reader.read()) != -1 ) {
System.out.print((char) charCode);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
728x90