Delphi: сохранить папку с файлами с помощью Synopse Big Table - PullRequest
0 голосов
/ 04 сентября 2011

Как я могу сохранить всю папку с ее файлами и папками с помощью Synopse Big Table?Мне нужно сделать резервную копию моих файлов без сжатия.Я слышал, что Synopse Big Table хорош для этой цели.Но я не смог найти информацию для этого.

Спасибо!

1 Ответ

1 голос
/ 04 сентября 2011

Почему вы не написали этот вопрос на форуме библиотеки ?

ОК, вот пример кода:

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, но, конечно, с немного меньшей степенью сжатия).

...