我可以用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