Stream
스트림은 byte 형태로 데이터를 운반하는데 사용하는 연결 통로이다.
단, 단방향으로 이루어져 있기 때문에 하나의 스트림으로 입출력을 동시에 할 수는 없다.
Java에서는 InputStream, OutputStream을 사용할 수 있다.
Java의 Stream은 여러 개의 입력을 받고 출력을 하려고 해도 하나의 값만 출력한다.
InputStream in = System.in;
OutputStream out = System.out;
int data = in.read();
out.write(data);
out.flush();
out.close();
Buffer
버퍼는 내부의 고정값이 아닌 가변적인 값의 버퍼를 받아 입력받은 값을 저장해 두었다가 버퍼가 가득 차거나 개행 문자가 나오면 한 번에 전송한다.
Java는 BufferedReader 와 BufferedWriter를 사용할 수 있다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
버퍼 객체는 inputStream과 InputStreamReader의 합쳐진 형태로 사용된다.
Channel IO
양 방향으로 데이터가 흐를 수 있고, 비 동기적으로 읽거나 쓸 수 있고, 항상 버퍼로 데이터를 읽고 쓰는데 NIO(New IO) 컴포넌트와 함께 사용한다.
Byte Stream
1Byte를 Input/Output 할 수 있도록 만든 스트림이다.
원시 데이터를 그대로 주고 받는다는 의미이다.
Java에서의 Byte Stream들은 뒤에 InputStream, OutputStream이 붙어있는 클래스를 상속하고 있다.
Character Stream
기존의 Byte를 2Byte씩 묶어서 사용할 수 있는 기능이 추가되어 있다.
Java에서는 Unicode 문자 방식을 사용하기 때문에 결국 Byte를 Character로 가공하는 것이 된다.
Java Character Stream의 클래스들은 Reader와 Writer를 달고 있다.
표준 스트림
Java는 표준 스트림인 System.out, System.in, System.err 를 제공한다.
스트림이기 떄문에 한 바이트만 받아서 처리할 수 있다.
int num = System.in.read(); // 키보드 키 1개에 해당되는 값만 저
System.out.print("숫자 :" + num) // 아스키 코드에 해당되는 숫자 값 출력
System.err.print("숫자 :" + num) // 글자의 색이 빨간색으로 변함
파일 읽고 쓰기
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt", true)); //a.txt 파일을 이어쓰기
bw.write(121212);
bw.newLine(); //줄바꿈
bw.write("afafaf");
bw.close();
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("a.txt")); // a.txt 파일 열기
String line = null;
while((line = br.readLine()) != null){ //txt 파일을 다 읽을 때까지 실행
System.out.println(line);
}
}
한글을 출력하기 위해서는 ByteSteam이 아닌 CharacterStream을 사용하여 출력한다.
'Java' 카테고리의 다른 글
| Java Study 7-3주차 (0) | 2023.11.18 |
|---|---|
| Java Study 7-2주차 (0) | 2023.11.18 |
| Java Study 6-2주차 (0) | 2023.11.11 |
| Java Study 6-1주차 (1) | 2023.11.11 |
| Java Study 5-2주차 (0) | 2023.11.05 |