본문 바로가기
자바 풀스택 공부

Day 47. [Java] InputStream, OutputStream

by seung_nari 2022. 3. 14.

데이터 입출력

-- 데이터는 사용자로부터 키보드, 마우스 등을 통해 입력 될 수 있고, 파일 또는 네트워크를 통해 입력될 수 있음

-- 모니터, 파일 등으로도 출력할 수도 있음

 

자바에서 데이터는 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));
	}
}

댓글