如何使用文件内容填充ByteArrayOutputStream?

时间:2013-07-16 16:06:51

标签: java

我有文件,需要将其内容填充到ByteArrayOutputStream,有人可以帮助我吗?使用Google Guava,我可以创建一个ByteArray但是如何从中获取ByteArrayOutputStream呢?

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

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

由于

3 个答案:

答案 0 :(得分:4)

  1. java.nio.file.Files.readAllBytes()可以在Java 7中提供帮助。

      

    从文件中读取所有字节。该方法确保在读取所有字节或抛出I / O错误或其他运行时异常时关闭文件。

         

    请注意,此方法适用于方便将所有字节读入字节数组的简单情况。它不适合阅读大文件。

  2. 更常规的方法是将FileInputStreamread()文件用于byte[]

  3. Apache Commons IObyte[] org.apache.commons.io.IOUtils.toByteArray(InputStream input)方法。

  4. Google's Guava获得了ByteStreams.toByteArray(InputStream)Files.toByteArray(File)

答案 1 :(得分:0)

查看Apache Commons IO(Library)的方法:

http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#copyFile(java.io.File,java.io.OutputStream)

或者,您可以使用:

File f = new File("/location/of/my/file");
byte[] = FileUtils.readFileToByteArray(f);

http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#readFileToByteArray(java.io.File)

答案 2 :(得分: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();
}