private static void TranslateFileSystemInfo(FlacFsObjectInfo fsoi, FileInformation fi) { fi.Attributes = fsoi.Attributes; fi.CreationTime = fsoi.CreationTime; fi.LastAccessTime = fsoi.LastAccessTime; fi.LastWriteTime = fsoi.LastWriteTime; fi.Length = fsoi.Length; fi.FileName = fsoi.Name; }
public FlacFsObjectInfo[] ListDirectoryContents(string relativePath) { string fullPath = GetPath(relativePath); if (!Directory.Exists(fullPath)) { return null; } List<FlacFsObjectInfo> entries = new List<FlacFsObjectInfo>(); DirectoryInfo parent = new DirectoryInfo(fullPath); DirectoryInfo [] directories = parent.GetDirectories(); foreach(DirectoryInfo di in directories) { FlacFsObjectInfo fsoi = new FlacFsObjectInfo(di); entries.Add(fsoi); } ListDirectoryFiles(parent); lock (directoryLookup_) { string key = KeyFromPath(parent.FullName); if (directoryLookup_.ContainsKey(key)) { FileInfo fi = null; VirtualTrack[] tracks = directoryLookup_[key]; foreach (VirtualTrack vt in tracks) { if (fi == null) { fi = new FileInfo(Path.Combine(parent.FullName, vt.ImageFile)); } FlacFsObjectInfo fsoi = new FlacFsObjectInfo(fi, vt); entries.Add(fsoi); } } } return entries.ToArray(); }