public FileBlock ReadNextBlock(FileStream sourceZipFileStream) { try { lock (locker) { if (sourceZipFileStream.Position == sourceZipFileStream.Length) { return(new NullFileBlock()); } currentHeader = FileHeaderHelper.ReadFileHeader(sourceZipFileStream); zipBytes = new byte[currentHeader.blockSize]; sourceZipFileStream.Read(zipBytes, 0, zipBytes.Length); ShowCurrentStatus(sourceZipFileStream); return(new FileBlock(currentHeader.blockNum, zipBytes, currentHeader.isEndOfFile)); } } catch (Exception ex) { Archivator.threadException = ex; return(new NullFileBlock()); } }
private void ValidateFileFormat(FileInfo fileToRestore) { try { using (FileStream fileStream = fileToRestore.OpenRead()) { FileHeader fileHeader = FileHeaderHelper.ReadFileHeader(fileStream); } } catch (Exception) { throw; } }
public void WriteBytesToFile() { try { using (FileStream outputFileStream = outputFile.Create()) { while (true) { if (!streamQueue.IsEmpty) { streamQueue.TryDequeue(out nextBlock); fileHeader = new FileHeader(nextBlock.blockNum, nextBlock.blockData.Length, nextBlock.isEndOfFile); FileHeaderHelper.WriteFileHeader(outputFileStream, fileHeader); outputFileStream.Write(nextBlock.blockData, 0, nextBlock.blockData.Length); } else { if (isEndOfFile) { Thread.Sleep(500); if (streamQueue.IsEmpty) { break; } } Thread.Sleep(100); } } } } catch (Exception ex) { Archivator.threadException = ex; } }