java - 如何使用字节数组作为参数构建 FileInputStream 对象

标签 java performance jakarta-ee bytearray fileinputstream

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

代码如下:

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

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

最佳答案

I have a zip file and after decoding it I get a byte array now I want to create a FileInputStream object with that byte[] object.

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

如果可能,请改用 ByteArrayInputStream:

InputStream input = new ByteArrayInputStream(decodedHeaderFileZip);

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

如果您确实必须创建FileInputStream,则需要先将数据写入文件。

关于java - 如何使用字节数组作为参数构建 FileInputStream 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19829955/

相关文章:

java - 此示例代码使用哪个版本的 Netty API?无法使用 3.2.x 解析 io.netty.handler.codec.http.DiskFileUpload

java - 如何提高单核CPU响应式(Reactive)编程的性能

performance - MongoDB限制内存

c++ - 多线程会提供任何性能提升吗?

performance - 使用 webpack devtool=eval 显示跨源 React 错误边界错误?

java - Glassfish/Payara javax.ejb.AccessLocalException : Client not authorized for this invocation in server. 日志

java - 在eclipse中调试Jar文件

java - Hibernate @Filter注解的使用

java - 我们如何测试数组是否返回不同的长度?

java - 没有遇到合适的连接提供程序 : JPA Hibernate