2010-03-26 8 views
2

Je veux rechercher les fichiers multimédias situés dans mon système par C#. signifie que je veux créer le moteur de recherche qui va scanner tous les lecteurs (encore une petite question ici, comment obtenir les lecteurs sur notre système par le code C#?) et rechercher les fichiers multimédias comme .mp3, .mp4, ... etc. Comment puis-je faire cela par une application de bureau C#?comment rechercher un fichier multimédia dans notre système par C#?

Répondre

5

essayez ceci:

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

Au lieu d'une force brute recherche itérative à travers les répertoires, je vous recommande de regarder dans l'aide de l'API Windows Desktop Search, qui sera ordres de grandeur plus rapide.

Windows Desktop Search via C#

0

Pour obtenir votre liste d'entraînement:

string[] drives = Environment.GetLogicalDrives(); 

Pour obtenir tous vos fichiers:

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

Pour obtenir tous vos fichiers en utilisant récursion:

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

Filtrer chanter la réponse de Manu

0

essayer

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