7

我有一个 zip 文件,解码后得到一个字节数组,现在我想用那个 byte[] 对象创建一个 FileInputStream 对象。我不想创建文件,而是将数据内容传递给 FileInputStream。有什么办法吗?

以下是代码:

byte[] decodedHeaderFileZip = decodeHeaderZipFile(headerExportFile);
FileInputStream fileInputStream = new FileInputStream(decodedHeaderZipFileString);

编辑:我想用 FileInputStream 构建一个 ZipInputStream 对象。

4

1 回答 1

33

我有一个 zip 文件,解码后得到一个字节数组,现在我想用那个 byte[] 对象创建一个 FileInputStream 对象。

但是你没有文件。您在内存中有一些数据。所以 aFileInputStream是不合适的 - 没有可供读取的文件。

如果可能,请使用 aByteArrayInputStream代替:

InputStream input = new ByteArrayInputStream(decodedHeaderFileZip);

在可能的情况下InputStream,用Reader等而不是任何特定的实现来表达您的 API - 这使您可以灵活地使用哪种实现。(我的意思是,在可能的情况下,制作方法参数和返回类型,InputStream而不是FileInputStream- 以便调用者不需要提供特定类型。)

如果您绝对必须创建一个FileInputStream,则需要先将数据写入文件。

于 2013-11-07T07:12:04.350 回答