/// <summary> /// Creates an Archiver instance from a file and a read mode /// </summary> /// <param name="path">The path to open</param> /// <param name="mode">The Open Mode</param> public Archiver(string path, ArchiveOpenMode mode) { SourceFile = path; Console.WriteLine($"Created Archiver with path: {path}"); _archiveStream = GetStream(path, mode); _archiveHeader = mode == ArchiveOpenMode.CREATE ? new ArchiveHeader() : ReadArchiveHeader(); //Read Header }
/// <summary> /// Function that Reads the Archive Header from the _archiveStream /// </summary> /// <returns>The Parsed Archive Header</returns> private ArchiveHeader ReadArchiveHeader() { Console.WriteLine("Parsing Archive Header"); int pD = (int)_archiveStream.Length - 1 - sizeof(int); _archiveStream.Position = pD; byte[] pdBlock = new byte[sizeof(int)]; _archiveStream.Read(pdBlock, 0, sizeof(int)); int pDelta = BitConverter.ToInt32(pdBlock, 0); _archiveStream.Position = pD - pDelta; return(ArchiveHeader.Deserialize(_archiveStream)); }
/// <summary> /// Creates an Archiver Instance from a stream /// </summary> /// <param name="archiveStream">The stream to be read from</param> /// <param name="compression">Does the stream contain compressed data?</param> public Archiver(Stream archiveStream, bool compression) { SourceFile = null; _archiveStream = HandleArchiveCompression(archiveStream, compression); _archiveHeader = ReadArchiveHeader(); }