public List <File> GetFiles(IFileSource.IDirectory current, FileType[] fileTypes, bool recursive) { Directory currentDir = current as Directory; List <File> results = new List <File>(); if (current != null) { SearchOption op = recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; string[] filePaths = Directories.GetFiles(currentDir.Path, "*.*", op); foreach (string filePath in filePaths) { File file = new File(filePath, fileTypes); if (file.Type == null) { continue; } results.Add(file); } } return(results); }
public List <IFileSource.IEntry> GetFiles(IFileSource.IDirectory current, bool recursive, FileInfoBase[] fileTypes) { Directory?currentDir = current as Directory; List <IFileSource.IEntry> results = new List <IFileSource.IEntry>(); if (currentDir != null) { SearchOption op = recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; string[] filePaths = Directories.GetFiles(currentDir.Path, "FFXIV_CHARA_*.DAT", op); foreach (string filePath in filePaths) { File file = new File(this); file.Path = filePath; file.Type = FileService.GetFileInfo <DatCharacterFile>(); string fileName = Paths.GetFileNameWithoutExtension(filePath); string slotNumber = fileName.Substring(12); FileStream stream = new FileStream(filePath, FileMode.Open); stream.Seek(0x30, SeekOrigin.Begin); using BinaryReader reader = new BinaryReader(stream); string desc = Regex.Replace(Encoding.ASCII.GetString(reader.ReadBytes(164)), @"(?![ -~]|\r|\n).", string.Empty); file.Name = slotNumber + ". " + desc.Substring(0, Math.Min(desc.Length, 50)); results.Add(file); } } return(results); }
public Task <IEnumerable <IFileSource.IEntry> > GetEntries(IFileSource.IDirectory current, bool recursive, FileInfoBase[] fileTypes) { if (recursive) { return(Task.FromResult <IEnumerable <IFileSource.IEntry> >(this.GetFiles(current, true, fileTypes))); } else { List <IFileSource.IEntry> results = new List <IFileSource.IEntry>(); results.AddRange(this.GetDirectories(current)); results.AddRange(this.GetFiles(current, false, fileTypes)); return(Task.FromResult <IEnumerable <IFileSource.IEntry> >(results)); } }
public List <Directory> GetDirectories(IFileSource.IDirectory current) { Directory?currentDir = current as Directory; List <Directory> results = new List <Directory>(); if (currentDir != null) { string[] dirPaths = Directories.GetDirectories(currentDir.Path); foreach (string dirPath in dirPaths) { results.Add(new Directory(dirPath, this)); } } return(results); }
public List <File> GetFiles(IFileSource.IDirectory current, bool recursive, FileInfoBase[] fileTypes) { Directory? currentDir = current as Directory; List <File> results = new List <File>(); HashSet <string> validExtensions = new HashSet <string>(); foreach (FileInfoBase info in fileTypes) { validExtensions.Add("." + info.Extension); } if (currentDir != null) { SearchOption op = recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; string[] filePaths = Directories.GetFiles(currentDir.Path, "*.*", op); foreach (string filePath in filePaths) { try { string extension = Paths.GetExtension(filePath); if (!validExtensions.Contains(extension)) { continue; } FileInfoBase info = FileService.GetFileInfo(extension); File file = new File(filePath, info, this); file.Metadata = info.GetMetadata(file); results.Add(file); } catch (Exception ex) { Log.Error(ex, "Failed to get file information"); } } } return(results); }
public Task <IEnumerable <IFileSource.IEntry> > GetEntries(IFileSource.IDirectory current, bool recursive, FileInfoBase[] fileTypes) { Directory?currentDir = current as Directory; if (currentDir == null || !currentDir.Exists) { throw new Exception("Current directory does not exist"); } if (recursive) { return(Task.FromResult <IEnumerable <IFileSource.IEntry> >(this.GetFiles(current, true, fileTypes))); } else { List <IFileSource.IEntry> results = new List <IFileSource.IEntry>(); results.AddRange(this.GetDirectories(current)); results.AddRange(this.GetFiles(current, false, fileTypes)); return(Task.FromResult <IEnumerable <IFileSource.IEntry> >(results)); } }
public Task <IEnumerable <IFileSource.IEntry> > GetEntries(IFileSource.IDirectory current, bool recursive, FileInfoBase[] fileTypes) { return(Task.FromResult <IEnumerable <IFileSource.IEntry> >(this.GetFiles(current, recursive, fileTypes))); }