2

システムにあるメディア ファイルを C# で検索したいと考えています。すべてのドライブをスキャンする検索エンジンを作成することを意味します (ここでも小さな質問ですが、C# コードでシステム上のドライブを取得する方法は?)、.mp3、.mp4 などのメディア ファイルを検索します。c#デスクトップアプリケーションでそれを行うにはどうすればよいですか?

4

4 に答える 4

6

これを試して:

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);
   }
}
于 2010-03-26T05:15:39.883 に答える
3

ディレクトリを力ずくで繰り返し検索するよりも、桁違いに高速な Windows デスクトップ サーチ API の使用を検討することをお勧めします。

C# による Windows デスクトップ サーチ

于 2010-03-26T05:56:03.787 に答える
0

ドライブ リストを取得するには:

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);
    }  
}

Manuの回答を使用してフィルタリングする

于 2010-03-26T07:30:11.007 に答える
0

これを試して

 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));
     }
于 2015-12-05T06:43:15.110 に答える