[바이트 스트림] 바이트배열의 사용[ByteArrayInputStream / ByteArrayOutputStream]
Java/Input/Output Facilities 2013. 2. 11. 06:42파일의 일부분을 조작하고자 하는경우 파일의 내용을 읽어들여 바이트를 배열화 시켜야 할 경우가 생긴다. 다음의 코드는 파일의 내용을 바이트 배열화하고, 바이트 배열을 다시 화면에 출력하는 코드이다.
** JVM이 다루는 Heap메모리보다 큰 배열을 사용할 수는 없기때문에 작성시 주의해야 한다.
파일의 내용을 byte[]에 저장한 후 화면에 출력
package ch4;
import java.io.*;
public class ByteArrayInputOutputTest {
public static void main(String[] args) { if(args.length != 1){ System.out.println("사용법 : java ByteArrayInputOutputTest 파일명"); System.exit(0); } // if end
FileInputStream fis = null; ByteArrayInputStream bais = null; ByteArrayOutputStream baos = null; try{ fis = new FileInputStream(args[0]); baos = new ByteArrayOutputStream(); byte[] buffer = new byte[512]; int readcount = 0; // 파일로부터 읽어들인 바이트 배열을 ByteArrayOutputStream으로 출력한다. while((readcount = fis.read(buffer)) != -1){ baos.write(buffer, 0, readcount); }
// ByteArrayOutputStream의 내부공간에 저장된 byte[] fileArray = baos.toByteArray(); System.out.println("파일의 내용을 모두 읽어 byte[]로 만들었습니다."); System.out.println("읽어들인 byte의 수 :" + fileArray.length);
// byte[]로부터 읽어들이는 ByteArrayInputStream을 생성한다. bais = new ByteArrayInputStream(fileArray); // ByteArrayInputStream을통해서 읽어 들인 byte배열을 표준출력장치(모니터)에 출력한다. while((readcount = bais.read(buffer)) != -1){ System.out.write(buffer, 0, readcount); } System.out.println("\n\n"); System.out.println("읽어들인 내용을 모두 출력했습니다."); }catch(Exception ex){ System.out.println(ex); }finally{ try{ fis.close(); bais.close(); baos.close(); }catch(IOException ioe){ System.out.println(ioe); } } } }
|
'Java > Input/Output Facilities' 카테고리의 다른 글
[문자 스트림] 문자단위로 파일내용을 읽은 후 화면으로 출력, 바이트단위처리와 문자단위 처리의 혼합사용 (0) | 2013.02.11 |
---|---|
[바이트 스트림] 파일이나 배열의 내용을 읽어들여 출력 (0) | 2013.02.11 |
[바이트 스트림] 기본 데이터형(int,float,double,boolean,short,byte 등) 파일에 저장/읽기 (0) | 2013.02.10 |
[바이트 스트림] 파일복사 - FileInputStream & FileOutputStream (0) | 2013.02.10 |
[바이트 스트림] 입출력시 OS에대한 고려해야할 사항 – 파일 IO Stream (0) | 2013.02.10 |