描述

我想学习,如果有任何方式使用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),你将能够选择的排序。预定义的排序上的档案并没有多大意义了我。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top