지직전기
[데이터베이스] 데이터 입출력 (Stream) 본문
입력스트림과 출력 스트림
프로그램을 기준으로 데이터가 들어오면 입력 스트림, 나가면 출력스트림
프로그램이 다른 프로그램과 데이터를 교환하려면 양쪽 모두 입력 스트림과 출력 스트림이 필요
바이트 스트림 : 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 입출력할 때 사용
문자 스트림 : 문자만 입출력할 때 사용
JAVA는 데이터 입출력과 관련된 라이브러리를 java.io 패키지에서 제공

OutputStream
OutputStream은 바이트 출력 스트림의 최상위 클래스로 추상 클래스
모든 바이트 출력 스트림 클래스는 이 OutputStram 클래스를 상속받아서 만들어짐
OutputStram 클래스에는 모든 바이트 출력 스트림이 기본적으로 가져야 할 메소드가 정의됨

1바이트 출력
write(int b) 메소드 : 매개값 int(4byte)에서 끝 1byte만 출력. 매개변수는 int 타입
바이트 배열 출력
write(byte[] b) 메소드 : 매개값으로 주어진 배열의 모든 바이트를 출력
배열의 일부분을 출력하려면 write(byte[] b, int off, int len) 메소드를 사용

InputStream
InputStream은 바이트 입력 스트림의 최상위 클래스로, 추상 클래스
모든 바이트 입력 스트림은 inputStram 클래스를 상속받아 만들어짐
InpuStream 클래스에는 바이트 입력 스트림이 기본적으로 가져야 할 메소드가 정의됨

1바이트 입력
read() 메소드 : 입력 스트림으로부터 1byte를 읽고 int(4byte) 타입으로 리턴. 리턴된 4byte 중 끝 1byte에만 데이터가 들어있음
더 이상 입력 스트림으로부터 바이트를 읽을 수 없다면 read() 메소드는 -1을 리턴.
읽을 수 있는 마지막 바이트까지 반복해서 한 바이트씩 읽을 수 있음.
바이트 배열 읽기
read(byte[] b) 메소드 : 입력 스트림으로부터 주어진 배열이 길이만큼 바이트를 읽고 배
열에 저장한 다음 읽은 바이트 수를 리턴
read(byte[] b)도 입력 스트림으로부터 바이트를 더 이상 읽을 수 없다면 -1을 리턴
읽을 수 있는 마지막 바이트까지 반복해서 읽을수 있음

데이터 입출력 예제
// 입력 예시 (c:/temp/test2.text 파일에 10, 20, 30, 40, 50이라는 데이터값을 입력)
public class WriterEx01 {
public static void main(String[] args) {
try {
OutputStream os = new FileOutputStream("C:/Temp/test2.text");
byte[] a = {10, 20, 30, 40, 50};
os.write(a, 1, a.length - 1);
os.flush();
os.close();
} catch (IOException io) {
io.printStackTrace();
}
}
}
//출력 예시
public class ReadEx01 {
public static void main(String[] args) {
try {
InputStream is = new FileInputStream("C:/Temp/test2.text");
while (true) {
int b = is.read();
if (b == -1) { // EoF : 파일의 끝(-1을 리턴)
break;
}
System.out.println(b + " ");
}
is.close();
}catch (FileNotFoundException e){
e.printStackTrace();
}catch(IOException io){
io.printStackTrace();
}
}
}
// 파일 복사
public class FileCopyEx01 {
public static void main(String[] args) {
String originFileName = "C:/Temp/imageEx.jpg";
String targetFileName = "C:/Temp/imageEx2.jpg";
try {
InputStream is = new FileInputStream(originFileName);
OutputStream os = new FileOutputStream(targetFileName);
/* byte[] data = new byte[30919]; --> 사진파일 복사
// while (true) {
// int num = is.read(data);
// if (num == -1) {
// System.out.println("copyEnd!");
// break;
// }
// os.write(data, 0, num);
} */
is.transferTo(os); //Java 9버전부터 추가된 기능(위에 주석문을 대체)
os.flush();
is.close();
os.close();
}catch (IOException io){
io.printStackTrace();
}
}
}
Writer(문자 출력 스트림)
Writer는 문자 출력 스트림의 최상위 클래스로, 추상클래스이다. 모든 문자 출력 스트림 클래스는 Writer 클래스를 상속.
Writer 클래스에는 모든 문자 출력 스트림이 기본적으로 가져야 할 메소드가 정의됨

Reader(문자 입력 스트림)
'STUDY > DataBase' 카테고리의 다른 글
| [데이터베이스] 9주차 교육 정리 (0) | 2024.01.29 |
|---|---|
| [데이터베이스] 8주차 교육 정리 (1) | 2024.01.24 |
| [데이터베이스] 7주차 교육 정리 (0) | 2024.01.24 |
| [데이터베이스] 데이터 모델링 (2) | 2024.01.24 |
| [데이터베이스] 관계대수 (1) | 2024.01.17 |