题
描述
我想学习,如果有任何方式使用PHP和/或Java。
标准程序里的zip文件的文件控制排序顺序我不是主要兴趣使用压缩/解压缩使用shell_exec()
或相似的,但它可以是感兴趣的,如果它具有易于使用户可以读取的解决方案。
通过排序它是安全的假设这意味着日期/时间,如果没有排序顺序是zip文件中提供。我看不懂的规格,所以我不知道。
实施例
文件
foo.txt的结果 跳回到bar.txt结果 test.txt的结果 newfile.txt
让我们假设每个文件包含文件的名称(foo.txt的=> foo.txt的)
问题
我想排序顺序附加到文件,以便使用unzip
解压的文件时按正确的顺序结束。这是很重要的,为什么?因为我使用unzip -p
到管zip文件的内容。
的顺序,其中文件被添加到档案不应物质。
结果
预期的结果(在本示例的目的(使用解压缩-p))
test.txt的结果 foo.txt的结果 newfile.txt结果 跳回到bar.txt
解决方案
可以使用命令zipinfo
(或unzip -Z
)在存档以显示文件。 man zipinfo
也有关于如何输出排序的例子,但它也可以在PHP如果在文件中的阵列和排序阵列读取排序。
其他提示
这是不是真的那么难。我看来,文件索引涉及其中文件被添加到档案中的顺序和该控制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();
的解压缩的文件的排序顺序(或文件系统上的任何文件)所依赖的“客户”你使用查看文件上。 ls命令在* nix系统上显示的名字为默认的命令文件。如果您正在使用某种形式的文件管理器应用程序(或unzipper),你将能够选择的排序。预定义的排序上的档案并没有多大意义了我。