我有一个zip文件,解码后我得到一个字节数组现在我想用byte []对象创建一个FileInputStream对象。我不想创建文件而是传递数据内容做FileInputStream。 有什么办法吗?
以下是代码:
byte[] decodedHeaderFileZip = decodeHeaderZipFile(headerExportFile);
FileInputStream fileInputStream = new FileInputStream(decodedHeaderZipFileString);
编辑: 我想用FileInputStream构建一个ZipInputStream对象。
答案 0 :(得分:21)
我有一个zip文件,解码后我得到一个字节数组现在我想用byte []对象创建一个FileInputStream对象。
但你没有档案。你的内存中有一些数据。所以FileInputStream
是不合适的 - 没有文件可以从中读取。
如果可能,请改为使用ByteArrayInputStream
:
InputStream input = new ByteArrayInputStream(decodedHeaderFileZip);
尽可能使用InputStream
,Reader
等表达您的API,而不是任何特定的实现 - 这使您可以灵活地使用您的实现。 (我的意思是尽可能使用方法参数和返回类型InputStream
而不是FileInputStream
- 这样调用者就不需要提供特定的类型。)
如果您绝对 创建FileInputStream
,则需要先将数据写入文件。