我想通过 c# 搜索位于我系统中的媒体文件。意味着我想创建将扫描所有驱动器的搜索引擎(这里又是一个小问题,如何通过 c# 代码获取我们系统上的驱动器?)并搜索 .mp3、.mp4 等媒体文件。我如何通过 c# 桌面应用程序做到这一点?
问问题
3762 次
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,这将快几个数量级。
于 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 回答