- 바이트 기반 입력 스트림의 최상위 클래스로 추상클래스
- 주요 메서드
- int read() : 입력스트림으로부터 1바이트를 읽고 읽은 바이트를 리턴한다
- int read(byte[] b) : 입력스트림으로부터 읽은 바이트들을 매개값으로 주어진 배열 b에 저장하고 실제로 읽은 바이트 수를 리턴한다.
- int read(byte[] b, int off, int len) : 입력스트림으로부터 len개 바이트만큼 읽고 매개값으로 주어진 바이트 배열 b[off]부터 len개 까지 저장한다. 그리고 실제로 읽은 바이트 수인 len개를 리턴한다. 만약 len개를 모두 읽지 못하면 실제로 읽은 바이트의 수를 리턴한다
- void close() : 사용한 시스템 자원을 반납하고 입력스트림을 닫는다.
// 1. 입력스트림 객체 System.in 통해 객체 생성
InputStream is = System.in;
// 2. 여러개의 문자열을 입력할 수 있게 지정(영문)
byte[] brr = new byte[10]; // byte 단위의 범위(영문, 특수문자 등)
// 3. read(byte[] ): 해당 배열의 갯수만큼 문자열을 받을 수 있다
System.out.print("입력할 문자열: ");
try {
int n = is.read(brr,0,6);
// 주의 : 문자열의 크기는 배열로 설정되었기 때문에, 설정된 문자보다 적게 입력하더라도 해당 문자의 크기로 담겨진다.
// 또한, 더 많은 문자를 입력하더라도 처음에 설정된 크기까지만 입력이 된다.
// ex) Hello 입력 => new byte[8] ==> ['H','e','l','l','o','',''}
// cf) byte, char 배열의 문자열 형변환 ==> new String(byte[]), new String(char[])
// n : 입력한 문자의 갯수
// byte[] brr : 입력한 문자의 코드 배열을 할당
// 만약 ABC 입력하면 ==> byte[] brr={65,66,67};
System.out.println("문자의 갯수: "+n);
System.out.println("입력된 문자!");
// brr[] : 입력된 데이터는 매개변수로 넘길 byte[]에 쌓임
for(byte b : brr) {
//brr={65,66,67};
//(char)brr[0]
// 'A', 'B', 'C'
System.out.print((char)b);
}
String str1 = new String(brr);
System.out.println("입력된 문자열:"+ str1);
is.close();
} catch (IOException e) {
e.printStackTrace();
}