Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 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));
     }
 }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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));
            }
        }
Exemple #7
0
 public Task <IEnumerable <IFileSource.IEntry> > GetEntries(IFileSource.IDirectory current, bool recursive, FileInfoBase[] fileTypes)
 {
     return(Task.FromResult <IEnumerable <IFileSource.IEntry> >(this.GetFiles(current, recursive, fileTypes)));
 }