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更多提前感谢