0

我有文件,需要将其内容填充到 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);

谢谢

4

3 回答 3

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

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

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

  2. 更传统的方法是使用 aFileInputStreamread()文件到 a byte[]

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

  4. Google 的 Guava得到了ByteStreams.toByteArray (InputStream)Files.toByteArray(File)

于 2013-07-16T16:08:49.557 回答
2

这是从文件读取到 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();
}
于 2013-07-16T16:25:44.413 回答
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)

于 2013-07-16T16:11:31.747 回答