我有文件,需要将其内容填充到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);
由于
答案 0 :(得分:4)
java.nio.file.Files.readAllBytes()可以在Java 7中提供帮助。
从文件中读取所有字节。该方法确保在读取所有字节或抛出I / O错误或其他运行时异常时关闭文件。
请注意,此方法适用于方便将所有字节读入字节数组的简单情况。它不适合阅读大文件。
更常规的方法是将FileInputStream
和read()
文件用于byte[]
。
Apache Commons IO有byte[] org.apache.commons.io.IOUtils.toByteArray(InputStream input)方法。
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);
答案 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();
}