public object Read(DataEntry entry) { if (fs == null) { fs = new FileStream(Path.Combine(WorkDirectory, $"{Header.FileName}._{entry.PageNum}"), FileMode.Open); currentPage = entry.PageNum; currentPos = fs.Position; } if (currentPage != entry.PageNum) { fs = new FileStream(Path.Combine(WorkDirectory, $"{Header.FileName}._{entry.PageNum}"), FileMode.Open); currentPage = entry.PageNum; currentPos = fs.Position; } if (currentPos != entry.Offset) { fs.Seek(entry.Offset, SeekOrigin.Begin); currentPos = fs.Position; } byte[] data = new byte[entry.Length]; fs.Read(data, 0, entry.Length); currentPos = fs.Position; return(BinaryHelper.Deserialize(data)); }
private void initialize(string fileName) { if (!File.Exists(fileName)) { throw new Exception($"不存在文件{fileName}"); } if (string.IsNullOrEmpty(WorkDirectory)) { WorkDirectory = System.Environment.GetEnvironmentVariable("TEMP"); } if (string.IsNullOrEmpty(WorkDirectory)) { string dir = Path.GetDirectoryName(fileName); string file = Path.GetFileNameWithoutExtension(fileName); WorkDirectory = Path.Combine(dir, file); } fileList = ZipHelper.UnZip(fileName, WorkDirectory); string headerFile = Directory.GetFiles(WorkDirectory).Where(item => Path.GetFileName(item) == $"{Path.GetFileName(fileName)}.header").FirstOrDefault(); if (!File.Exists(headerFile)) { throw new Exception($"未能在目录{WorkDirectory}找到.header文件"); } Header = BinaryHelper.Deserialize <SummaryHeader>(File.ReadAllBytes(headerFile)); validateMD5(); }
private void initialize() { fileList = ZipHelper.UnZip(Path.Combine(WorkDirectory, FileEntry.FileName), WorkDirectory); string headerFile = Directory.GetFiles(WorkDirectory).Where(item => Path.GetFileName(item) == $"{FileEntry.FileName}.header").FirstOrDefault(); if (!File.Exists(headerFile)) { throw new Exception($"未能在目录{WorkDirectory}找到.header文件"); } Header = BinaryHelper.Deserialize <PartialHeader>(File.ReadAllBytes(headerFile)); }