gpt4 book ai didi

delphi - 如何在 Delphi 中设置文件的压缩属性?

转载 作者:行者123 更新时间:2023-12-03 14:45:33 26 4
gpt4 key购买 nike

如何从 Delphi 压缩文件(设置“c”属性)?我说的是NTFS下可用的“压缩内容以节省磁盘空间”功能。

看来FileSetAttr不允许我设置文件的“c”属性。

最佳答案

您还可以使用CIM_DataFileCIM_Directory WMI 类,都有两个名为 Compress 的方法和UnCompress可用于设置文件或文件夹中的 NTFS 压缩。

检查这些示例(如果)

压缩 (NTFS) 或解压缩文件

function  CompressFile(const FileName:string;Compress:Boolean):integer;
var
FSWbemLocator : OLEVariant;
FWMIService : OLEVariant;
FWbemObject : OLEVariant;
begin;
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
FWbemObject := FWMIService.Get(Format('CIM_DataFile.Name="%s"',[StringReplace(FileName,'\','\\',[rfReplaceAll])]));
if Compress then
Result:=FWbemObject.Compress()
else
Result:=FWbemObject.UnCompress();
end;

压缩 (NTFS) 或解压缩文件夹

function  CompressFolder(const FolderName:string;Recursive, Compress:Boolean):integer;
var
FSWbemLocator : OLEVariant;
FWMIService : OLEVariant;
FWbemObject : OLEVariant;
StopFileName : OLEVariant;
begin;
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
FWbemObject := FWMIService.Get(Format('CIM_Directory.Name="%s"',[StringReplace(FolderName,'\','\\',[rfReplaceAll])]));
if Compress then
if Recursive then
Result:=FWbemObject.CompressEx(StopFileName, Null, Recursive)
else
Result:=FWbemObject.Compress()
else
if Recursive then
Result:=FWbemObject.UnCompressEx(StopFileName, Null, Recursive)
else
Result:=FWbemObject.UnCompress();
end;

关于delphi - 如何在 Delphi 中设置文件的压缩属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7002575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com