Day21-2. 230526
입출력 스트림
바이트 입력 스트림 : InputStream
- InputStream은 바이트 기반 입력 스트림의 최상위 클래스로 추상 클래스.
- 모든 바이트 기반 입력 스트림은 InputStream 클래스를 상속받아 만들어짐.
- FileInputStream, BufferedputStream, DataInputStream 클래스는 모두 InputStream 클래스를 상속하고 있음.
- InputStream 클래스의 주요 메소드
read() 메소드
입력 스트림으로부터 1byte를 읽고 int(4byte) 타입으로 리턴.
리턴된 4byte 중 끝의 1byte에만 데이터가 들어 있음.
더 이상 입력 스트림으로부터 바이트를 읽을 수 없다면 read() 메소드는 -1을 리턴, 이것을 이용하면 읽을 수 있는 마지막 바이트까지 반복해서 1byte씩 읽을 수 있음.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package chap14;
import java.io.FileInputStream;
import java.io.InputStream;
public class Read01 {
public static void main(String[] args) throws IOException {
// 1byte씩 읽기-read()
InputStream is = new FileInputStream("C:\\javaStudy\\test.db");
while(true) {
int data = is.read();
if(data==-1) break;
System.out.println(data);
}
is.close();
}
}
|
cs |
* 실행 결과
10
20
30
전 게시물에서 생성한 C:\\javaStudy\\test.db에 저장된 내용을 1byte씩 끝까지 읽음.
10라인은 데이터 출발지를 test.db로 하는 바이트 가반의 파일 입력 스트림을 생성하고 InputStream타입 변수에 대입.
FileInputStream은 자식 클래스이므로 자동 타입 변환.
11~14라인은 InputStream으로 반복해소 1byte씩 읽고 모니터에 출력.
16라인 InputStream을 더 이상 사용하지 않겠다는 의미로 close() 메소드 호출.
read(byte[] b) 메소드
입력 스트림으로부터 매개값으로 주어진 배열의 길이만큼 바이트를 읽고 해당 배열에 저장. 그리고 읽은 바이트 수를 리턴.
실제로 읽은 바이트 수가 배열의 길이보다 적을 경우, 읽은 수만큼 리턴.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package chap14;
import java.io.FileInputStream;
import java.io.InputStream;
public class Read017 {
public static void main(String[] args) throws IOException {
// byte배열 전체 읽기-read(byte[])
InputStream is2 = new FileInputStream("C:\\javaStudy\\test2.db");
byte[] buffer = new byte[100];
while(true) {
int data = is2.read(buffer);
if(data==-1) break;
for(int i=0; i<data; i++) {
System.out.println(buffer[i]);
}
}
is2.close();
}
}
|
cs |
* 실행 결과10
20
30
read(byte[] b, int off, int len) 메소드
입력 스트림으로부터 len개의 바이트만큼 읽고,
매개값으로 주어진 바이트 배열 b[off]부터 len개 까지 저장하고읽은 바이트 수인 len개를 리턴
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package chap14;
import java.io.FileInputStream;
import java.io.InputStream;
public class Read01 {
public static void main(String[] args) throws IOException {
// byte배열 일부 읽기-read(byte[],int 시작인덱스,int 개수)
InputStream is3 = new FileInputStream("C:\\javaStudy\\test3.db");
byte[] buffer3 = new byte[5];
while(true) {
int data = is3.read(buffer3,2,3); //입력 스트링(is3)으로부터 3byte읽고 buffer3[2],buffer3[3]buffer3[4]에 저장
if(data==-1) break;
for(int i=0; i<buffer3.length; i++) {
System.out.println(buffer3[i]);
}
}
is3.close();
}
}
|
cs |
* 실행 결과
0
0
100
110
120
0
0
122
124
120
'개발 수업 > JAVA' 카테고리의 다른 글
[Java] 보조스트림 (0) | 2023.05.26 |
---|---|
[Java] 입출력 스트림/문자 출력 스트림(Writer) (0) | 2023.05.26 |
[Java] 입출력 스트림(Stream)/바이트 출력 스트림( OutputStream) (0) | 2023.05.25 |
[Java] 람다식 (0) | 2023.05.25 |
[Java] 스레드 연습 (0) | 2023.05.25 |