자바 풀스택 공부
Day 47. [Java] InputStream, OutputStream
seung_nari
2022. 3. 14. 17:19
데이터 입출력
-- 데이터는 사용자로부터 키보드, 마우스 등을 통해 입력 될 수 있고, 파일 또는 네트워크를 통해 입력될 수 있음
-- 모니터, 파일 등으로도 출력할 수도 있음
자바에서 데이터는 Stream을 통해 입출력됨.
* Stream은 단일 방향으로 연속적으로 흘러가는 것을 의미, 데이터는 출발지에서 나와 도착지로 흘러간다는 개념
데이터를 입력 받을 때 - InputStream
데이터를 출력 할 때 - OutputStream
>> 둘 다 바이트 단위 입출력 스트림
* 바이트 단위 입출력 스트림
: 그림, 멀티미디어, 문자등 모든 종류의 데이터들을 주고 받을 수 있다.
코드화 하는 모든 것은 입력
반대는 전부 출력!
public class IOEx1 {
public static void main(String[] args) {
byte[] inSrc = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
byte[] outSrc = null;
ByteArrayInputStream input = null;
ByteArrayOutputStream output = null;
input = new ByteArrayInputStream(inSrc);
output = new ByteArrayOutputStream();
int data = 0;
// while((data = input.read()) != -1) { // input.read() 가 0일때까지 반복한다. 0은 end of file
// output.write(data);
// }
data = input.read(); // 1
output.write(data);
data = input.read();
output.write(data);
data = input.read();
output.write(data);
data = input.read();
output.write(data);
data = input.read();
output.write(data);
data = input.read();
output.write(data);
data = input.read();
output.write(data);
data = input.read();
output.write(data);
data = input.read();
output.write(data);
data = input.read(); // 10
output.write(data);
data = input.read(); // 11 >> -1
output.write(data);
outSrc = output.toByteArray();
System.out.println("Input Source : " + Arrays.toString(inSrc));
System.out.println("Output Source : " + Arrays.toString(outSrc));
}
}
public class IOEx3 {
public static void main(String[] args) throws IOException {
byte[] inSrc = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
byte[] outSrc = null;
byte[] temp = new byte[4];
ByteArrayInputStream bais = new ByteArrayInputStream(inSrc);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
System.out.println("input source: " + Arrays.toString(inSrc));
while(bais.available() > 0) {
baos.write(temp, 0, bais.read(temp));
// System.out.println("temp : " + Arrays.toString(temp));
outSrc = baos.toByteArray();
printArrays(temp, outSrc);
}
}
static void printArrays(byte[] temp, byte[] outSrc) {
System.out.println("temp : " + Arrays.toString(temp));
System.out.println("Output Source : " + Arrays.toString(outSrc));
}
}