public PPVAX(Stream input) { _stream = input; using (var br = new BinaryReaderX(input, true)) { while (br.PeekInt32() != 0x800) { br.ReadInt32(); lateStart = true; } do { entries.Add(br.ReadStruct <Entry>()); if (firstFileOffset == 0) { firstFileOffset = entries.FirstOrDefault()?.Offset ?? 0; } } while (br.PeekInt32() > 0); br.BaseStream.Position = firstFileOffset; for (var i = 0; i < entries.Count; i++) { Files.Add(new PpvaxFileInfo { Entry = entries[i], FileName = $"{i.ToString("000")}.ppvax", FileData = new SubStream(br.BaseStream, entries[i].Offset, entries[i].NextOffset - entries[i].Offset), State = ArchiveFileState.Archived }); } } }
public bool Identify(string filename) { var result = true; try { using (var br = new BinaryReaderX(File.OpenRead(filename))) if (br.PeekInt32() == 0) { return(false); } var mmb = new MMB(File.OpenRead(filename)); } catch { result = false; } return(result); }