고급 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();
}
}
}