2013-07-16 4 views
-5

파일이있어서 ByteArrayOutputStream에 내용을 채워야 할 사람이 있습니까? Google Guava를 사용하면 ByteArray를 만들 수 있지만이 방법으로 ByteArrayOutputStream을 얻는 방법은 무엇입니까?파일 내용으로 ByteArrayOutputStream을 채우는 방법?

ByteArrayOutputStream baos = null; 
File img = new File("myTestfile.txt"); 
byte[] filesBytes = Files.toByteArray(f); 

//does not work 
baos = new ByteArrayOutputStream(filesBytes); 

감사

+0

파일을 스트림으로 읽으려고합니까? –

+0

확실하지만 그냥 스트림 자료를 이해할 수있는 좋은 링크를 찾지 못했습니다. –

답변

4
  1. java.nio.file.Files.readAllBytes()

    파일의 모든 바이트를 읽어 자바 7에 도움이 될 수 있습니다. 이 메서드는 모든 바이트를 읽었거나 I/O 오류 또는 다른 런타임 예외가 발생하면 파일이 닫히도록합니다.

    이 방법은 모든 바이트를 바이트 배열로 읽는 것이 편리한 간단한 경우를위한 것입니다. 큰 파일을 읽는 것은 아닙니다.

  2. 더 많은 기존의 방법은 byte[]FileInputStreamread() 파일을 사용하는 것입니다.

  3. Apache Commons IObyte[] org.apache.commons.io.IOUtils.toByteArray(InputStream input)이다.

  4. Google's GuavaByteStreams.toByteArray(InputStream)Files.toByteArray(File)이다. 아파치 코 몬즈 IO (도서관)에서

0

다음은 읽는 구식 방식입니다. ByteArrayOutputStream 에의 파일

public void getBytes(String fileName) throws FileNotFoundException, 
     IOException { 
    byte[] buffer = new byte[4096]; 
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
      fileName)); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    int bytes = 0; 
    while ((bytes = bis.read(buffer, 0, buffer.length)) > 0) { 
     baos.write(buffer, 0, bytes); 
    } 
    baos.close(); 
    bis.close(); 
} 
관련 문제