将文件或文件夹压缩成一个zip文件?

3

我需要知道如何将文件压缩成zip文件?我找到了这个漂亮的代码片段this,它可以解压缩zip文件。

我找到了haxe.zip.Compress,但是没有找到任何关于如何使用它的示例,请有经验的人帮助我在haxe中压缩文件。

编辑

感谢下面的回答,我尝试了Entry:

    var fileInput:FileInput = File.read("myfile.xml");
    var bytes:Bytes = Bytes.ofData(File.getBytes("myfile.xml").getData());

    var entry:Entry = {
        fileName:"myfile.xml", 
        fileSize:bytes.length,
        fileTime:Date.now(),
        compressed: false,
        dataSize: 0,
        data: bytes,
        crc32:Crc32.make(bytes)
        };

Tools.compress(entry, 1); 

但我发现 PHP 没有实现 Tools.compress。

我尝试过:

Compress.run(bytes, 1);

我得到了:

uncaught exception: Not implemented for this platform

Called from haxe.zip.Compress::run
Called from Main::main

虽然 Compress 被提及为 适用于所有平台

有什么想法吗?

2个回答

2

一个完整的代码片段需要我一些时间(而且我必须确保一切正常工作),但你应该遵循的方向是...

你需要为每个文件创建一个未压缩的Entry,使用haxe.zip.Tools.compress进行压缩,最后使用haxe.zip.Writer.write写入所有条目(List<Entry>)。


please check my EDIT above - Samir Sabri
@SamirSabri,很抱歉 haxe.zip.Compress 目前还没有为 PHP 实现。有两种主要的方法:包装一些现有的 PHP 函数(可能是 gzdeflate),或创建一个完全跨平台的 DeflateImpl.hx(可能通过移植 zlib 的实现来实现)。 - Jonas Malaco
感谢 @jonasmalacofilho,我正在编写我的 PHP 应用程序,我只会依赖 Haxe 来处理 XML :) - Samir Sabri

0

我认为 haxe.zip 包只适用于 neko 目标,不确定。如果是这样,你可能需要 格式化库


我看到了那个库,但它只支持neko进行压缩/解压缩,就像这里所示https://github.com/HaxeFoundation/format/blob/master/format/zip/Tools.hx - Samir Sabri
please check my EDIT above - Samir Sabri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接