我想知道这两行代码之间的区别。
byte[] fileBytes = FileUtils.readFileToByteArray(new File(completeFilePath.toString()));
..
return new FileTransfer(errorFileName, "application/vnd.ms-excel", is);
和
File csvFile = new File(completeFilePath.toString());
InputStream is = new BufferedInputStream(new FileInputStream(csvFile));
return new FileTransfer(errorFileName, "application/vnd.ms-excel", is);
如果有任何优点和缺点,欢迎澄清细节。 提前致谢。
最佳答案
FileTransfer
有多个需要不同参数的构造函数。
您的第一个示例调用构造函数,该构造函数将内容作为字节数组 (byte[]
)。
您的第二个示例调用采用 InputStream
的构造函数,并将从传递的 InputStream
中读取内容本身。
如果你的文件很大,显然不要使用第一个,因为它需要将整个文件读入内存。
第二种方法在所有情况下似乎都更好,除非您还需要文件内容,那么您必须读取它两次。
关于java - FileTranfer(DWR)中Byte[]和InputStream的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25619058/