我在下面的代码中有一个查询,我有一个文件名,如下所示
String filename = "C:\\abcd\\Ttre.xls";
稍后我将传递给 FileInputStream
对象,如下所示
FileInputStream fileStream = new FileInputStream(filename);
workbook = new HSSFWorkbook(fileStream);
上面的快乐案例是文件名是硬编码的,它被传递给 FileInputStream
对象但是假设有人以字节数组的形式给我文件然后如何处理这种情况
如下图
public void abcd( byte[] excelByteStream) {
//how to pass the the byte array file to the FileInputStream object
}
所以在那种情况下,我们如何将字节流文件传递给 FileInputStream
对象,请指教
最佳答案
你不能。 FileInputStream
是一种 InputStream
,需要一个文件作为输入。
要使用字节数组,您可以使用 java.io.ByteArrayInputStream
,这也是 InputStream
的另一种类型。
只需确保将预期的输入流定义为接受更通用的 InputStream
。 (例如:public HSSFWorkbook(InputStream inputStream) {//HSSFWorkbook 构造函数定义
)
文档:ByteArrayInputStream .
编辑:一个更完整的例子
如果您的 HSSFWorkbook
类的构造函数当前定义为:
public HSSFWorkbook(FileInputStream inputStream) {
// ...
}
...您可能希望将其更改为接受更通用的 InputStream
类,它现在允许您将 FileInputStream
或 传递给它ByteArrayInputStream
实例取决于您从哪里调用它。像这样:
public HSSFWorkbook(InputStream inputStream) {
// ...
}
然后您可以使用任一选项实例化您的HSSFWorkbook
:
FileInputStream fileStream = new FileInputStream(filename);
workbook = new HSSFWorkbook(fileStream); // still works
……或者……
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(excelByteStream);
workbook = new HSSFWorkbook(byteArrayInputStream ); // now also works.
关于java - 在java中将字节数组传递给fileinputstream的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31364991/