Exemplo n.º 1
0
        /// <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
        }
Exemplo n.º 2
0
        /// <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));
        }
Exemplo n.º 3
0
 /// <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();
 }