Java FileTransfer(DWR)中字节[]和InputStream之间的差异

Java FileTransfer(DWR)中字节[]和InputStream之间的差异,java,dwr,Java,Dwr,我想知道这两行代码之间的区别 byte[] fileBytes = FileUtils.readFileToByteArray(new File(completeFilePath.toString())); .. return new FileTransfer(errorFileName, "application/vnd.ms-excel", is); 及 任何一方的优势和劣势都欢迎澄清细节。 提前感谢。FileTransfer有多个构造函数,它们需要不同的参数 第一个示例调用构造函

我想知道这两行代码之间的区别

 byte[] fileBytes = FileUtils.readFileToByteArray(new File(completeFilePath.toString()));
  ..
 return new FileTransfer(errorFileName, "application/vnd.ms-excel", is);

任何一方的优势和劣势都欢迎澄清细节。
提前感谢。

FileTransfer有多个构造函数,它们需要不同的参数

第一个示例调用构造函数,该构造函数将内容作为字节数组(
byte[]

第二个示例调用构造函数,该构造函数接受
InputStream
,并从传递的
InputStream
读取内容本身

如果文件很大,显然不要使用第一个文件,因为它需要将整个文件读入内存


第二种方法似乎在所有情况下都更好,除非您还需要文件内容,否则您必须阅读两次。

尝试编辑第一个代码区域并指定使用
fileBytes
的位置。
 File csvFile = new File(completeFilePath.toString());
 InputStream is = new BufferedInputStream(new FileInputStream(csvFile));
 return new FileTransfer(errorFileName, "application/vnd.ms-excel", is);