创建采用Delphi压缩(zipped)文件夹(Creating Compressed (Zippe

2019-06-25 00:23发布

我可以用Delphi创建Windows XP的压缩(zipped)文件夹?

Answer 1:

如果使用的是德尔福X2,只要使用TZipFile从System.Zip:

来压缩文件夹,使用:

TZipFile.ZipDirectoryContents('ZipFile.zip', 'C:\Zip\this\right\now');

zip文件,使用方法:

Zip := TZipFile.Create;
try
  Zip.Open('ZipFile.zip', zmWrite);

  Zip.Add('FileToBeZipped.txt');
  Zip.Add('ThisWillBeCompressedAgainForSureAndBecomeSmaller.zip');
finally
  Zip.Free;
end


Answer 2:

根据线程eggheadcafe ,您可以使用CreateFile函数与FILE_FLAG_BACKUP_SEMANTICS创建压缩文件夹。

对于外壳扩展路线,看看使用Windows XP的“压缩文件夹”外壳扩展与.zip文件工作的命名空间Edanmo,这是用VB写。

我刚发现被问及C ++的类似的问题。 看看在Windows上创建的C / C ZIP文件(XP / 2003)++ 。 我有一种感觉,最简单的途径是购买ZipForge。 见邮编Delphi代码样本中的文件 。



Answer 3:

前一段时间,我已经尝试了所有我能找到的德尔福压缩库,并最终我最终使用KaZip由基里尔·安东诺夫 。

我的要求是:

  • 自由;
  • 开源;
  • 原生Delphi代码;
  • 没有外部依赖(DLL,EXE)。 我的最重要的要求;
  • 小内存占用;
  • 使用方便;

我用它主要是为了把文件变成.KML名为.kmz,它确实是惊人的快。

下面是我如何使用它的一个示例:

uses
  KaZip;

...

// replaces a .kml file with a .kmz file
procedure KmlToKmz(const aFileName: string);
var
  FS: TFileStream;
  KaZip:TKaZip;
  KmzFileName:TFileName;
begin
  KmzFileName := ChangeFileExt(aFileName, '.kmz');
  KaZip := TKaZip.Create(nil);
  try
    // create an empty zipfile with .kmz extension:
    FS := TFileStream.Create(KmzFileName, fmOpenReadWrite or FmCreate);
    try
      KaZip.CreateZip(FS);
    finally
      FS.Free;
    end;        

    KaZip.Open(KmzFileName); // Open the new .kmz zipfile
    KaZip.Entries.AddFile(aFileName); // add the .kml
    KaZip.Close; 
    DeleteFile(aFileName); // delete the .kml
  finally
    KaZip.Free;
  end;
end;


Answer 4:

看看这个开放源代码SynZip单元 。 它是减压比随德尔福默认单位甚至更快,这将产生一个小的EXE(在启动时创建CRC表)。

无需外部DLL。 德尔福6工作到XE。 没问题德尔福的Unicode版本。 都在一个单元。

我只是做了一些修改,以处理ZIP内容,不仅赢ANSI的字符集,但任何Unicode字符内的Unicode文件名。 反馈是值得欢迎的。



Answer 5:

你可以使用TurboPower公司Abbrevia现在是开源的。



Answer 6:

Windows中的“拉链”文件夹无非是使用任何标准的zip压缩库.zip文件等等。 压缩的文件夹是一个不同的动物,需要一个NTFS磁盘格式。

对于“压缩”文件,我强烈建议的涡轮增压动力Abbrevia ,这是开源的,并且效果很好。 你可能要检查这个备用 ,如果您使用的Delphi 2009的网站,因为它可能是一个较新的副本。

如果你想要使用压缩文件夹选项,你将需要修改的目录手柄的目录标志。 这只会影响添加到该目录中的新文件,并且不会自动压缩现有文件。 如果你有尝试压缩现有的目录,然后重命名每个现有的文件,并加载和保存回原来的名字删除原始文件时与每一个完成。 Yozey有一个很好的链接到MSDN文档。 请记住,这仅NTFS格式的磁盘工作,所以你需要在代码中添加一个检查了点。



Answer 7:

您可以使用像任何压缩机的一些命令行版本7zip的做用ShellExecute的任务,或者您可以使用免费或罗科梅组件喜欢的人这些 。

我用了ZipMaster和它的表现非常好我的目的。 我不知道什么是你的尺寸,空间和性能的要求。



Answer 8:

看看这些:

  • 文件压缩
  • FSCTL_SET_COMPRESSION


文章来源: Creating Compressed (Zipped) Folder using Delphi