고급 JAVA

JAVA -입출력 -비트 스트림

햄찌개 2020. 9. 28. 09:23

문자 1개씩 복사하는 것

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Arrays;

public class T03_ByteArrayIOTest {

	public static void main(String[] args) throws IOException {
		byte[] inSrc = {0,1,2,3,4,5,6,7,8,9};
		byte[] outSrc = null;
		
		//스트림선언 및 객체 생성 
		ByteArrayInputStream bais = null; //스트림 객체 선언
		bais = new ByteArrayInputStream(inSrc);	//객채 생성
		
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		
		int data;	//읽어온 자료를 저장할 변수 
		
		//read()메서드 => byte단위로 자료를 읽어와 int형으로 변환한다.
		//		 	 => 더 이상 읽어올 자료가 없으면 -1을 반환한다.
		while ((data=bais.read())!=-1) {
			baos.write(data);
		}
		
		//출력된 스트림 값들을 배열로 변환해서 반환하는 메서드
		outSrc = baos.toByteArray();
		
		System.out.println("inSrc => "+Arrays.toString(inSrc));
		System.out.println("outSrc => "+Arrays.toString(outSrc));
		
		//스트림객체 닫아주기
		bais.close();
		baos.close();
		
		
		
	}

}

 

 

문자 4개씩 담아서 복사 하는 것

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Arrays;

public class T04_ByteArrayIOTest {

	public static void main(String[] args) {
		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();
		
		try {
			//available()	=> 읽어 올 수 있는 byte수를 반환 
			int len;	//실제 읽어온 byte수를 반환한다.
			while((len=bais.read(temp))!=-1){
				//while(bais.available()>0){
			/*bais.read(temp);	//temp 배열 크기만큼 자료를 읽어와 temp 배열에 저장한다.
			baos.write(temp);  //temp 배열의 내용을 출력한다.
			 */			
				
			//실제로 읽어올 byte수 
			//int len = bais.read(temp);
			
			//temp배열의 내용 중에서 0번째 부터 len개수만큼 출력
			baos.write(temp, 0, len);
			//0이 시작점 len이 몇개 길이
				
			System.out.println("temp : "+Arrays.toString(temp) );
			}
			outSrc = baos.toByteArray();
			
			System.out.println("inSrc => "+Arrays.toString(inSrc));
			System.out.println("outSrc => "+Arrays.toString(outSrc));
			
			//스트림객체 닫아주기
			bais.close();
			baos.close();
			
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}