[英]How to write a correct zipfile checksum value, and make it as part of zipfile content
[英]How to interate ZipFile content in alphabetic order?
我有一个包含数千个文件的大型.zip
存档。 如何以特定顺序(例如字母升序)迭代它们?
try (ZipFile zip = new ZipFile(archive)) {
Enumeration<? extends ZipEntry> entries = zip.entries();
while (entries.hasMoreElements()) {
var file = entries.nextElement();
//...
}
}
我发现流媒体可能是一种选择。 但是没有流媒体也有可能吗?
List<? extends ZipEntry> list = zip.stream()
.sorted(Comparator.comparing(ZipEntry::getName))
.collect(Collectors.toList());
没有 ZipFile 特定的方式来对 ZipFile 的条目进行排序或“读取”已排序的 ZipFile 的内容。 ZipFile Javadoc 中对排序的唯一参考是使用 ZipFile.stream 时。
在这种情况下,条目“[...] 按照它们在 ZIP 文件的中央目录中出现的顺序出现在流中。”
因此,在 Java 中排序/排序时,您只能使用通常的方法:
要么使用 stream() 方法获取流,对其进行排序并执行您的逻辑:
zip.stream()
.sorted( Comparator.comparing( ZipEntry::getName ) ) // define your order
.forEach( this::doStuff ); // do your logic, in this example it is a method in this class
或将枚举转换为集合并对集合进行排序,例如
List< ? extends ZipEntry > entries = Collections.list( zip.entries() );
entries.sort( Comparator.comparing( ZipEntry::getName ) ); // define your order
for (ZipEntry entry : entries) {
doStuff(entry);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.