[JAVA] 자바 - 입출력 스트림 요약 (바이트 스트림 / 문자 스트림)
by mini_min[JAVA]
자바 - 입출력 스트림 요약
✔️ 바이트 스트림 출력
- InputStream : byte 입력 스트림(추상 클래스)
✨ int read() : 1byte를 읽어 들여 ascii 코드 반환하고, 읽어 들일것이 없으면 -1 반환
인자로 배열을 줘서 배열만큼 읽을 수도 있다.
💡 int read(byte[] b, int off, int len)
- OutputStream : byte 출력 스트림(추상 클래스)
✨ void write(int b) : b의 내용중 하위 1byte를 출력
💡 void write(byte[] b, int off, int len) : 바이트 배열 b의 off 위치에서부터 len 길이 만큼 출력
System.in : InputStream 객체
System.out : PrintStream 객체
InputStream is = System.in;
OutputStream out = System.out;
✔️ PrintStream
: 필터 스트림이며 OutputStream 을 상속 받아 다양한 출력 메소드를 제공한다.
: 바이트 입력 스트림에서 MS949인 경우 한글은 한글자가 2byte 이므로 2번 입력
: UTF-8인 경우 한글은 한글자가 3byte 이므로 3번 입력
🔒 1byte 씩 입력 받아 출력하기 (Ctrl+Z를 누르면 종료)
int data;
while((data = System.in.read()) != -1) {
System.out.write(data); // 하위 1byte만 출력. 한글도 출력됨
// System.out.print(ch); // 한글은 깨짐. 1byte만 읽어 2byte로 출력하므로
}
✔️ 문자 스트림 출력
- 한글이나 영문 모두 한 번에 한 글자씩 입력 받거나 출력한다.
- Reader : 문자 입력 스트림(추상 클래스)
- InputStreamReader : byte 입력 스트림을 문자 입력 스트림으로 변환
- Writer : 문자 출력 스트림(추상 클래스)
- OutputStreamWriter : byte 출력 스트림을 문자 출력 스트림으로 변환
💡 void flush() : 스트림을 flush한다.(출력 버퍼의 내용을 출력 장치로 보낸다.)
Reader rd = new InputStreamReader(System.in);
Writer wt = new OutputStreamWriter(System.out);
🔒 한 문자 입력받기 / 1 문자를 입력 받아 출력(Ctrl+Z를 누르면 종료)
int data=rd.read();
/////
int data;
while((data = rd.read()) != -1) {
wt.write(data); // 하위 2byte 출력
// System.out.print(ch); // 한글 깨지지 않음
}
wt.flush(); // 출력 버퍼의 내용을 출력 장치로 보냄
✔️ 파일 입출력 바이트 스트림
- FileInputStream : 파일 입력 byte 스트림
✨ 파일이 없으면 FileNotFoundException 발생
- FileOutputStream : 파일이 없으면 만들고 파일이 있으면 지우고 만듬
🔒 File 객체를 이용한 FileInputStream / FileOutputStream 객체 만들기
File f1 = new File("파일명.확장자");
File f2 = new File("파일명.확장자");
FileInputStream fis = new FileInputStream(f1);
FileOutputStream fos = new FileOutputStream(f2);
✔️ 파일 입출력 문자 스트림
- 파일 내용의 문자를 입력받는 스트림 객체 만들기
FileReader frd = new FileReader("파일명.확장자");
- 파일 내용의 문자를 출력받는 스트림 객체 생성
FileWriter fwt = new FileWriter("파일명.확장자");
✔️ PrintStream
- 다른 출력 스트림에 기능을 추가해 다양한 값의 표현을 편리하게 출력하는 기능을 가진 클래스다.
- 파일 값을 저장하기 위한 PrintStream 객체 생성
File f1 = new File("파일명.확장자");
PrintStream ps = new PrintStream(f1);
✔️ PrintWriter
- 포맷된 오브젝트의 표현을 텍스트 출력 스트림에 출력한다.
- System.out를 이용한 PrintWriter 객체 생성
PrintWriter pw = new PrintWriter(System.out, true);
// true 옵션을 주면 println() 메소드나 flush() 또는 close() 메소드를 호출하면 출력
'Java' 카테고리의 다른 글
[JAVA] 자바 - DataOutputStream / BufferedReader 버퍼 크기 주기 (0) | 2022.08.30 |
---|---|
[JAVA] 자바 - RandomAccessFile / PrintWriter / BufferedWriter (0) | 2022.08.30 |
[JAVA] 자바 - 파일 확장자 바꿔서 저장하기 (0) | 2022.08.29 |
[JAVA] 자바 - 파일 정보/파일명/경로 등 출력하기 (+폴더 만들기/지우기/폴더 이름변경) (0) | 2022.08.29 |
[JAVA] 자바 - 파일 내용 읽어서 일부분만 다른 파일로 저장하기 (문제) (0) | 2022.08.29 |
블로그의 정보
개발자 미니민의 개발로그
mini_min