- Stream의 종류 : Node Stream. Filter Stream
- Node Stream : 주변 기기에 직접 연결해서 데이터를 바로 뽑아내는 것들. (키보드, 마우스, 디스크 등등)
- Filter Stream : 데이터를 읽어낸 것을 가공해서 결과물을 얻어내는 것을 말한다.
- I/O의 종류 :
InputStream (1byte) : 한글이 깨짐
Reader(2byte) : 한글이 읽힘(unicode)
OutputStream (1byte)
Writer (2byte)
- InputStream 클래스 : public abstract class InputStream이므로 객체가 될 수 없음(상속만 받을 수 있음)
- BufferedInputStream 클래스 : public class BufferedInputStream 이므로 객체가 될 수 있음. 또한 BufferedInputStream(InputStream in) 이므로 BufferedInputStream 객체를 생성하기 위해서 InputStream 생성자를 받아야 함.
- 소스
import java.io.*;
import java.util.Scanner;
public class InputstreamTest {
public static void main(String[] args) {
// InputStream은 추상클래스이기에 객체를 생성할 수 없다.
// 그래서 시스템 클래스의 in을 이용하여 사용 가능.
InputStream in = System.in;
int val;
try{
// byte 타입으로 데이터를 읽어드림.
while((val=in.read()) != -1){ // -1이면 다음 byte가 비어있는 상태
System.out.print((char)val); // byte로 읽어왔으므로 char로 형변환
}
} catch(IOException e){
e.printStackTrace();
}
System.out.println();
// Scanner 클래스 때문에 InputStream, Reader 클래스 등등을 배울 필요가 없다.
Scanner sc = new Scanner(System.in);
// 한 단어씩 읽어드림
String data = sc.next();
Scanner sc2 = new Scanner(System.in);
// 한 라인씩 읽어드림
String linedata = sc2.nextLine();
System.out.print(data);
}
}
- 결과