Delphi:使用Synopse Big Table保存包含文件的文件夹

时间:2011-09-04 00:37:30

标签: delphi file backup save bigtable

如何使用Synopse Big Table保存整个文件夹及其文件和文件夹?我需要在没有压缩的情况下备份我的文件。我听说Synopse Big Table很适合这个目的。但我无法找到信息来实现这一目标。

谢谢!

1 个答案:

答案 0 :(得分:1)

你为什么不写这个问题in the library forum

好的,这是一些示例代码:

function SaveFolderToBigTableFile(const aFolder, aFile: TFileName): boolean;
var SR: TSearchRec;
    BT: TSynBigTableString;
    aPath: TFileName;
    Path: RawUTF8;
begin
  DeleteFile(aFile);
  result := true;
  BT := TSynBigTableString.Create(aFile);
  try
    aPath := ExtractFilePath(aFolder);
    Path := StringToUTF8(aPath);
    if FindFirst(aPath+'*.*',faAnyFile,SR)=0 then
    try
      repeat
        if (SR.Name[1]='.') or (faDirectory and SR.Attr<>0) then
          Continue;
        if BT.Add(StringFromFile(aPath+SR.Name),StringToUTF8(SR.Name))<>0 then
          writeln(SR.Name,' added') else begin
          result := false;
          writeln(SR.Name,' ERROR');
        end;
        if BT.CurrentInMemoryDataSize>100000000 then
          BT.UpdateToFile;
      until FindNext(SR)<>0;
    finally
      FindClose(SR);
    end;
  finally
    BT.Free;
  end;
end;

诀窍是使用文件名作为密钥来使用TSynBigTableString类。

只需使用我们的SynLZ库即可添加非常快速的压缩(比zip快得多,但当然压缩率稍低)。