java - 有没有办法在不创建 File 对象的情况下转换 DataHandler (带有压缩内容)来获取 InputStream?

标签 java stream java-io zip

我想省略创建文件。我的 DataHandler 对象包含 zip 文件,其中包含一个条目。我需要正确获取可以读取压缩内容的InputStream

实际上,我的“流程”如下:DataHandler -> File -> ZipFile -> first ZipEntry.getInputStream()。

有没有办法不创建File/ZipFile对象?

最佳答案

是的,您可以使用ZipInputStream相反。

编辑:这取决于压缩内容在DataHandler中的存储方式。

如果它存储在字节数组中...

byte[] zippedContent = dataHandler.getContent();
InputStream in = new ByteArrayInputStream(zippedContent);
ZipInputStream zipIn = new ZipInputStream(in)
ZipEntry zipEntry = zipIn.getNextEntry();

如果它提供对InputStream的访问...

ZipInputStream zipIn = new ZipInputStream(dataHandler.getInputStream());
ZipEntry zipEntry = zipIn.getNextEntry();

现在您可以从 ZipInputStream 中读取扩展的内容,就像读取任何其他 InputStream 一样。

关于java - 有没有办法在不创建 File 对象的情况下转换 DataHandler (带有压缩内容)来获取 InputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13344352/

相关文章:

java - 如何正确使用hibernate注解?

java - 使用自定义登录页面登录后 Spring Security Thymeleaf 页面 403

java - 无法抗拒工作

Java IO 输入流在读取外部 C 程序的标准输出和标准错误时阻塞

java - 随机访问文件 FileLock : java. io 与 java.nio

java - 尝试调用虚拟方法(空对象引用)

java - SSL上下文。我应该重新加载它吗?

c++ - C++ 流中的无效输入

stream - 根据流项的属性将 futures::Stream 拆分为多个流

java - 检索 ProcessBuilder 的输出