Exemplo n.º 1
0
 /// <summary>
 /// Disposes the Archiver with saving the archive header at the end of the archive. and optionally applying compression
 /// </summary>
 /// <param name="saveArchiveHeader"></param>
 /// <param name="compression"></param>
 public void Dispose(bool saveArchiveHeader, bool compression)
 {
     if (saveArchiveHeader)
     {
         Console.WriteLine("Saving Archive Header");
         _archiveStream.Position = _archiveHeader.LastEnd + 1;
         int bytesWritten = _archiveHeader.Serialize(_archiveStream);
         _archiveStream.Write(BitConverter.GetBytes(bytesWritten), 0, sizeof(int));
         _archiveStream.SetLength(_archiveStream.Position + 1);
     }
     if (compression && SourceFile != null)
     {
         File.Delete(SourceFile);
         Stream     s   = File.Open(SourceFile, FileMode.Create);
         GZipStream zip = new GZipStream(s, CompressionLevel.Optimal);
         _archiveStream.Position = 0;
         _archiveStream.CopyTo(zip);
         zip.Close();
         s.Close();
         _archiveStream.Close();
         return;
     }
     _archiveStream.Close();
     if (SourceFile != null)
     {
         File.Delete(SourceFile);
         File.Move(TempFile, SourceFile);
     }
     if (File.Exists(TempFile))
     {
         File.Delete(TempFile);
     }
 }