Exemple #1
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);
        }