Как искать медиа-файл в нашей системе с помощью C #? - PullRequest
2 голосов
/ 26 марта 2010

Я хочу найти медиафайлы, расположенные в моей системе, с помощью c #. означает, что я хочу создать поисковую систему, которая будет сканировать все диски (опять небольшой вопрос здесь, как получить диски в нашей системе с помощью кода C #?) и искать медиа-файлы, такие как .mp3, .mp4, ... и т. д. Как я могу сделать это с помощью настольного приложения c #?

Ответы [ 4 ]

5 голосов
/ 26 марта 2010

попробуйте это:

List<string> mediaExtensions = new List<string>{"mp3", "mp4"};
List<string> filesFound = new List<string>();

void DirSearch(string sDir) 
{
   foreach (string d in Directory.GetDirectories(sDir)) 
   {
    foreach (string f in Directory.GetFiles(d, "*.*")) 
    {
        if(mediaExtensions.Contains(Path.GetExtension(f).ToLower()))
           filesFound.Add(f);
    }
    DirSearch(d);
   }
}
3 голосов
/ 26 марта 2010

Вместо того, чтобы выполнять итеративный поиск по каталогам методом «грубой силы», я рекомендую изучить использование Windows Desktop Search API, которое будет на порядков быстрее.

Поиск рабочего стола Windows через C #

0 голосов
/ 05 декабря 2015

попробуйте

 var files = new List<string>();
     //@Stan R. suggested an improvement to handle floppy drives...
     //foreach (DriveInfo d in DriveInfo.GetDrives())
     foreach (DriveInfo d in DriveInfo.GetDrives().Where(x => x.IsReady == true))
     {
        files.AddRange(Directory.GetFiles(d.RootDirectory.FullName, "File Name", SearchOption.AllDirectories));
     }
0 голосов
/ 26 марта 2010

Чтобы получить список дисков:

string[] drives = Environment.GetLogicalDrives();

Чтобы получить все ваши файлы:

foreach(string drive in drives)
    string[] allFiles = Directory.GetFiles(drive, "*.*", SearchOption.AllDirectories);

Чтобы получить все ваши файлы с помощью рекурсии:

List<string> allFiles = new List<string>();
private void RecursiveSearch(string dir)
{
    allFiles.Add(Directory.GetFiles(dir));
    foreach(string d in Directory.GetDirectories(dir))
    {
      RecursiveSearch(d);
    }  
}

Фильтр по ответу Ману

...