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

时间:2015-07-12 06:17:32

标签: java file fileinputstream

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

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

那么在这种情况下我们如何将字节流文件传递给memberAccessExpression对象请告知

2 个答案:

答案 0 :(得分:1)

你做不到。 FileInputStream是一种InputStream类型,需要将文件作为输入。

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

确保将期望输入流的任何内容定义为接受更通用的InputStream。 (例如:public HSSFWorkbook(InputStream inputStream) { // HSSFWorkbook constructor definition

文档:ByteArrayInputStream

编辑:更完整的示例

如果您的HSSFWorkbook类的构造函数当前定义为:

public HSSFWorkbook(FileInputStream inputStream) {
    // ...
}

...您希望将其更改为接受更通用的InputStream类,现在允许您将FileInputStreamByteArrayInputStream实例传递给它,具体取决于你叫它。像这样:

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.

答案 1 :(得分:0)

使用ByteArrayInputStream代替FileInputStream:

workbook = new HSSFWorkbook(excelByteStream);