Saber se um arquivo compactado com zLib está normal.

29/05/2008

1

Boa tarde a todos.

Uso o seguinte algorítimo(peguei exemplo da net) para compactar arquivos :
var
  FileInName: TFileName;
  FileIn, FileOut: TFileStream;
  Zip: TCompressionStream;
  NumArquivos, I, Len, Size: Integer;
  Fim: Byte;
begin
  FileOut := TFileStream.Create(FileOutName, fmCreate or fmShareExclusive);
  Zip := TCompressionStream.Create( clMax, FileOut);
  NumArquivos := Length(Files);
  Zip.Write(NumArquivos, SizeOf(Integer));
  try
    for I := Low(Files) to High(Files) do
    begin
      FileIn := TFileStream.Create(Files[I], fmOpenRead and fmShareExclusive);
      try
        FileInName := ExtractFileName(Files[I]);
        Len := Length(FileInName);
        Zip.Write(Len, SizeOf(Integer));
        Zip.Write(FileInName[1], Len);
        Size := FileIn.Size;
        Zip.Write(Size, SizeOf(Integer));
        Zip.CopyFrom(FileIn, FileIn.Size);
        Fim := 0;
        Zip.Write(Fim, SizeOf(Byte));
      finally
        FileIn.Free;
      end;
    end;
  finally
   Zip.Free;
   FileOut.Free;
  end;
end;


A minha dúvida é como fazer para testar se o arquivo compactado está normal(não está corrompido)? já pensou se eu preciso voltar o sistema apartir dos arquivos compactados e na hora H vejo que não tenho exatamente nada para voltar ?

A segunda dúvida é como se comportará o código acima quando for uma base extremamente grande ? poderá comprometer o funcionamento do pc em função de está sendo executado na memória ram ? se for, o que posso fazer ?

Se puderem me auxiliar, agradeço muito pois nem sei por onde começar.

[]´s


Responder

Posts

30/05/2008

Eniorm

uma vez testei o zLib e o que me fez desistir foi que eu não conseguia, por exemplo, compactar vários arquivos num mesmo pacote compactado. (talvez até tenha mas na época eu não achei informações sobre isso)

[b:e5aa351a06][i:e5aa351a06]A MELHOR FORMA SE SABER SE ESTÁ CORROMPIDO OU NÃO É TESTAR DESCOMPACTAR[/i:e5aa351a06][/b:e5aa351a06]
o mesmo vale para backups, vc tem que restaurar pra saber...

então vc teria que descompactar e testar se ocorreu tudo certo.


vou dar meu exemplo atual de uso sem o zLib

num programa de backup, primeiro eu compacto tudo com o WinRAR executando-o pela linha de comando, onde os arquivos e pastas a serem compactados estão contidos num arquivo texto

depois de compactado tenho a opção para enviar esse pacote para o CD.

como o WinRAR é pago (e eu o uso graças ao romário), irei mudar para ao invés de usar o winrar, usar o 7-Zip que compacta no formato LZMA (alta compactação) e é totalmente free.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira