如何使用Synopse Big Table保存整个文件夹及其文件和文件夹?我需要在没有压缩的情况下备份我的文件。我听说Synopse Big Table很适合这个目的。但我无法找到信息来实现这一目标。
谢谢!
答案 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快得多,但当然压缩率稍低)。