java - 在java中将字节数组传递给fileinputstream的方法

标签 java file 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 
}

所以在那种情况下,我们如何将字节流文件传递给 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/

相关文章:

java - Android 在 Class Object 中添加 ArrayList<Object> 作为变量

c - 将变量添加到文件路径

Perl脚本从多个txt文件中读取和打印行?

java - Openfileinput 返回空指针异常

java - 调用bean时Primefaces RemoteCommand时滞

java - 将日期和时间转换为时间戳格式 java "2019-02-21T14:10:18.161+0000"

java - 如何使用 Pixmap Libgdx 获取碰撞

c - 如何在C中的不同行中将字符串写入文件

.pdf 文件的 java 文件复制程序在输出中获取损坏的文件

java - 以编程方式将文件从 R.raw 目录移动到内部存储