/// <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); }
/// <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; } }