Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中向fileinputstream传递字节数组的方法_Java_File_Fileinputstream - Fatal编程技术网

java中向fileinputstream传递字节数组的方法

java中向fileinputstream传递字节数组的方法,java,file,fileinputstream,Java,File,Fileinputstream,我有一个查询,在下面的代码我有一个文件名如下所示 String filename = "C:\\abcd\\Ttre.xls"; 稍后我将传递给FileInputStream对象,如下所示 FileInputStream fileStream = new FileInputStream(filename); workbook = new HSSFWorkbook(fileStream); 上面的一个令人高兴的例子是,文件名是硬编码的,它被传递到FileInputStream对象,但是假设有人

我有一个查询,在下面的代码我有一个文件名如下所示

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 
}

因此,在这种情况下,我们将如何将ByTestStream文件传递给
FileInputStream
对象,请告知您不能这样做
FileInputStream
是一种需要文件作为输入的
InputStream
类型

要使用字节数组,可以使用
java.io.ByteArrayInputStream
,这也是另一种类型的
InputStream

只需确保任何需要输入流的内容都被定义为接受更通用的
InputStream
。(例如:
公共HSSF工作簿(InputStream InputStream){//HSSF工作簿构造函数定义

文档:

编辑:一个更完整的示例

如果您的
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.
使用而不是FileInputStream:

workbook = new HSSFWorkbook(excelByteStream);

什么是HSSFWorkbook?可以在其构造函数中处理
输入流
,还是它特别需要
文件输入流
?@SkinnyJ它也可以,我已经展示了显式的一个。您可以展示一下我们如何在其构造函数中传递输入流吗?您也可以更正我上面发布的代码,这将有助于asp更多提前感谢