Pet*_*ist 10 php java sorting unzip
我有兴趣了解是否有任何方法可以使用 PHP 和/或 Java 中的标准例程来控制 zip 文件中文件的排序顺序。
我主要对使用 zip/unzip usingshell_exec()或类似方法不感兴趣,但如果它提供了一个易于阅读的解决方案,它可能会引起人们的兴趣。
使用排序顺序,如果 zip 文件中没有可用的排序顺序,则可以安全地假设它表示日期/时间。我没有阅读规格,所以我不知道。
文件
foo.txt
bar.txt
test.txt
newfile.txt
假设每个文件都包含文件名 (foo.txt => foo.txt)
问题
我想为文件附加一个排序顺序,以便在使用unzip文件解压缩时以正确的顺序结束。这很重要,为什么?因为我使用unzip -p管道传输 zip 文件的内容。
将文件添加到存档的顺序应该无关紧要。
结果
预期结果(为了这个例子(使用 unzip -p))
test.txt
foo.txt
newfile.txt
bar.txt
这其实并没有那么难。我发现文件索引与文件添加到存档的顺序有关,这控制了 的输出,unzip -p因为它似乎以 0..n 的方式迭代文件。
下面介绍如何创建满足条件的文件。(好吧,几乎是因为我忘记了 txt 文件中的换行符)
$files = array(
'test.txt',
'foo.txt',
'newfile.txt',
'bar.txt'
);
$outfile = 'testout.zip';
if (file_exists($outfile)) {
unlink($outfile);
}
$o = new ZipArchive();
$o->open($outfile,ZipArchive::CREATE);
foreach($files as $key => $file) {
$o->addFile($file);
}
$o->close();
Run Code Online (Sandbox Code Playgroud)
您可以使用命令zipinfo(或unzip -Z)来显示存档中的文件。man zipinfo还有关于如何对输出进行排序的示例,但如果您读取数组中的文件并对数组进行排序,也可以在 PHP 中进行排序。
| 归档时间: |
|
| 查看次数: |
10358 次 |
| 最近记录: |