Example #1
0
        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));
        }
Example #2
0
        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();
        }
Example #3
0
        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));
        }