InputStream : 바이트 단위 입력 스트림 최상위 추상클래스
주요 하위 클래스
FileInputStream : 파일에서 바이트 단위로 자료를 읽음
ByteArrayInputStream : byte 배열 메모리에서 바이트 단위로 자료를 읽음
FileInputStream : 기반스트림에서 자료를 읽을 때 추가 기능을 제공하는 보조 스트림의 상위 클래스
주요 메서드
int read() : 입력 스트림으로부터 한바이트의 자료를 읽음, 읽은 자료의 바이트 수를 반환
void close() : 입력 스트림과 연결된 대상 리소스를 닫음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
public class fileInputStreamTest {
public static void main(String args[]) {
// 바이트단위 파일 입력 스트림
FileInputStream fi = null;
try {
// 바이트로 자료를 읽어들여 하나씩 출력
fi = new FileInputStream("data.txt"); // ABC
// fi.read()
// read()의 반환값이 end of file (-1) 더 이상 읽을 자료가 없을 경우
// -1을 반환 하기 때문에 반환타입이 INT이다
System.out.println((char)fi.read()); // A
System.out.println((char)fi.read()); // B
System.out.println((char)fi.read()); // C
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
fi.close(); // 리소스 연결끊기
} catch (IOException e) { // NULL 방지
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public class FileInputStreamAutoTest {
public static void main(String args[]) {
int i;
// try문 안에 넣을 경우 auto close
try(FileInputStream fi = new FileInputStream("data.txt")){
// 파일을 끝까지 읽어드리기 위해 반환값이 -1까지
// read()의 반환타입은 int이다
while((i = fi.read()) != -1) {
System.out.print((char)i);
}
}catch(Exception e) { // FileNotFound, IOException
}
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public class ByteArrayInputStreamTest {
public static void main(String args[]) {
int i ;
// abc...z까지 의 값
try(FileInputStream fi = new FileInputStream("data.txt")){
byte[] b = new byte[10];
// 파일이 끝날때까지
// while( (i = fi.read(b)) != -1 ) {
// // while( (i = fi.read(b,1,9)) != -1 ) { // 1의위치에서 9개를 읽어
//
// for(int c : b) { // 10 바이트 수만큼 반복
// // 10바이트씩 읽을 경우 마지막 10바이트의 남은부분은 기존에 읽어들였던 데이터가 존재
// System.out.print((char)c);
// }
// System.out.println(" : "+i+ " 바이트");
// }
while( (i = fi.read(b)) != -1 ) {
for(int j=0;j<i;j++) {
System.out.print((char)b[j]);
}
System.out.println(" : "+i+ " 바이트");
}
}catch(Exception e) {
}
}
}
|
cs |
OutputStream : 바이트 단위 출력 스트림 최상위 추상 클래스
주요 하위 클래스
FileOutputStream : 파일에서 바이트 단위로 자료를 씀
ByteArrayOutputStream : byte 배열 메모리에서 바이트 단위로 자료를 씀
FileOutputStream : 기반 스트림에서 자룔르 쓸때 추가 기능을 제공하는 보조 스트림의 상위 클래스
주요 메서드
int write() : 한 바이트 씩 출력
void flush() : 출력을 위해 잠시 자료가 멀무르는 출력 버퍼를 강제로 비워 자료를 출력
void close() : close 시 flush()도 같이 불러짐
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public class FileOutputStreamTest {
public static void main(String args[]) {
try {
// FileInputStream의 경우 파일이 없으면 FileNotFound가 뜨지만
// FileOutputStream의 경우 파일을 만들어줌
FileOutputStream fo = new FileOutputStream("data1.txt");
fo.write(65); // A
fo.write(66); // B
fo.write(67); // C
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public class ByteArrayOutputStreamTest {
public static void main(String args[]) throws FileNotFoundException {
FileOutputStream fo = new FileOutputStream("data3.txt");
// default가 false
// true일 경우 append되서 출력.
//FileOutputStream fo = new FileOutputStream("data.txt",true);
try(fo) { // 자바 9부터 가능한 기능
// A~Z
byte[] b = new byte[26];
// A
byte data = 65;
for(int i=0;i<b.length;i++) {
b[i] = data++;
}
fo.write(b);
//fo.write(b,2,10); C부터 10개
}catch(Exception e) {
}
}
}
|
cs |
'OOP > Java' 카테고리의 다른 글
보조 스트림 클래스 (0) | 2022.05.25 |
---|---|
문자 단위 스트림 (0) | 2022.05.22 |
표준 입출력 스트림 (0) | 2022.05.22 |
자바 입출력을 위한 I/O 스트림 (0) | 2022.05.19 |
java.util.logging.Logger 활용 (0) | 2022.05.18 |