/// <summary>
        /// Read a file item as a DirectoryItem and name. This is slower than reading it directly, but results in a significantly smaller archive
        /// where most files are in the same directories.
        /// </summary>
        /// <param name="Reader">Archive to read from</param>
        /// <returns>FileItem read from the archive</returns>
        static FileItem ReadCompactFileItemData(this BinaryArchiveReader Reader)
        {
            DirectoryItem Directory = Reader.ReadDirectoryItem();
            string        Name      = Reader.ReadString();

            FileItem FileItem = FileItem.GetItemByFileReference(FileReference.Combine(Directory.Location, Name));

            FileItem.UpdateCachedDirectory(Directory);
            return(FileItem);
        }
Beispiel #2
0
 /// <summary>
 /// Caches the files in this directory
 /// </summary>
 public void CacheFiles()
 {
     if (Files == null)
     {
         Dictionary <string, FileItem> NewFiles = new Dictionary <string, FileItem>(FileReference.Comparer);
         if (Info.Exists)
         {
             foreach (FileInfo FileInfo in Info.EnumerateFiles())
             {
                 FileItem FileItem = FileItem.GetItemByFileInfo(FileInfo);
                 FileItem.UpdateCachedDirectory(this);
                 NewFiles[FileInfo.Name] = FileItem;
             }
         }
         Files = NewFiles;
     }
 }