Exemplo n.º 1
0
        private void RunExtract()
        {
            try
              {
            Progress = 0;

            FileStream fileStream = new FileStream(this.backupFile, FileMode.Open, FileAccess.Read);
            GZipStream gzipStream = new GZipStream(fileStream, CompressionMode.Decompress);
            DeserializeContext context = new DeserializeContext(gzipStream);

            int fileCount = context.ReadInt32();
            long totalSize = context.ReadInt64();
            long doneSize = 0;

            for (int index = 0; index < fileCount; index++)
            {
              string fileName = context.ReadString();
              FileName = fileName;
              byte[] data = context.ReadBytes();
              File.WriteAllBytes(Path.Combine(this.dataPath, fileName), data);
              doneSize += data.Length;

              Progress = 1d / (double)totalSize * (double)doneSize;
            }

            context.Close();
            gzipStream.Close();
            fileStream.Close();
              }
              catch (Exception exception)
              {
            Exception = exception;
              }

              Complete = true;
        }