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

标签 delphi compression ntfs

如何从 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/

相关文章:

java - 用于数据库存储的 IP 压缩

python - 在带有 Python 的 Windows 上使用符号链接(symbolic link)模块

.net - 在 .NET 中更改日志操作?

windows - NTFS 连接点和符号链接(symbolic link)有什么区别?

delphi - FastMM 是否只报告内存泄漏和/或内存分配?

ios - 在 iOS 设备上部署文件 delphi xe

delphi - 从 TAutoObject 返回 TAutoIntfObject 实例

delphi - 怎样使TDictionary不免费提供元素?

javascript - 使用 pako.js 在 javascript 中生成 Gzip 字符串

algorithm - 估计数据的压缩大小