如何在不写入文件的情况下读取压缩输入流



我正在编写一个单元测试,测试创建三个压缩在一起的文件并返回InputStream(特别是ByteArrayInputStream(的功能。我只想单独处理每个文件,解压缩它,然后对内容做出一些断言。我在网上找到的所有东西都是写入文件,那么我该如何在mem中完全做到这一点呢?

我要说的是:


val zipIn = new ZipInputStream(zippedStream)
Stream.continually(zipIn.getNextEntry)
.takeWhile(_ != null)
.foreach { entry =>
val fout = new FileOutputStream(entry.getName)
val buffer = new Array[Byte](1024)
Stream.continually(zipIn.read(buffer))
.takeWhile(_ != -1)
.foreach(fout.write(buffer, 0, _))
}

使用ByteArrayOutputStream而不是FileOutputStream。这个类将写入字节数组的数据累积起来,并在需要时调整大小。您可以使用toByteArray方法获得它累积的字节的副本。

最新更新