Exemplo n.º 1
0
        /// <summary>
        /// Reads a File from the archive
        /// </summary>
        /// <param name="archiveFile">Qualified path of the ArchiveFile</param>
        /// <returns>The bytes that were stored.</returns>
        public byte[] ReadFile(string archiveFile)
        {
            int start  = _archiveHeader.GetNodeDataStart(ConvertToArchivePath(archiveFile));
            int length = _archiveHeader.GetNodeDataEnd(ConvertToArchivePath(archiveFile)) - start;

            byte[] b = new byte[length];
            _archiveStream.Position = start;
            _archiveStream.Read(b, 0, b.Length);

            if (_archiveHeader.GetNodeType(ConvertToArchivePath(archiveFile)) == ArchiveHeader.ArchiveNodeType.Local)
            {
                return(b);
            }

            WebClient wc = new WebClient();

            Console.WriteLine($"Downloading Web Node: {Encoding.UTF8.GetString(b)}");
            byte[] ret = wc.DownloadData(new Uri(Encoding.UTF8.GetString(b)));
            wc.Dispose();
            return(ret);
        }