use*_*918 5 compression io scala
我有一个大小为 100-200 GB 的文本文件。所以我希望以压缩格式存储(例如zip)。但是,由于其大小,我需要一次处理一行。虽然使用 一次一行读取文本文件很简单io.Source.fromFile(fileName).getLines,但这仅适用于解压缩的文件。
有没有一些有效的方法可以在scala中逐行读取压缩文件?我找不到任何示例,但我看到的更接近的实现是here,但它将文件加载到内存中。与通常给出的使用 zip 存档的示例不同,我只需要处理一个压缩的文本文件。如果有任何指示或线索,我将不胜感激。
如果文件是 Gzipped,java 会GzipInputStream为您提供流式访问:
val lines: Iterator[String] = Source
.fromInputStream(new GzipInputStream(new FileInputStream("foo.gz")))
.getLines
Run Code Online (Sandbox Code Playgroud)
如果正如您的问题所示,它是一个zip 存档,那就更复杂了。Zip 存档更像是文件夹而不是单个文件。您必须先阅读目录,然后浏览条目以找到您想要阅读的条目(或阅读所有条目)。像这样的东西
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |