개발자 미니민의 개발스터디

[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() 메소드를 호출하면 출력

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기