好的,我有一些代码会扫描我的电脑并找到.txt文件并将它们显示在列表框中:
private void button2_Click(object sender, EventArgs e)
{
IEnumerable<string> files = System.IO.Directory.EnumerateFiles(@"C:\", "*.txt*", System.IO.SearchOption.AllDirectories);
foreach (var f in files)
{
listBox1.Items.Add(String.Format("{0}", f));
}
}
每次运行时都会出错。它说我不授权垃圾桶。我不关心天气它是否扫描垃圾。有没有办法将垃圾桶排除在扫描范围之外?此外,如果您发现任何错误,有人可以帮助我改进我的代码!谢谢!
答案 0 :(得分:2)
最快的方法是将它们置于try-catch块下,因为EnumerateFiles
函数由于操作系统权限而无权访问受限文件。
private void SearchDrives()
{
foreach (String drive in Directory.GetLogicalDrives())
{
try
{
// Search for folders into the drive.
SearchFolders(drive);
}
catch (Exception) { }
}
}
//---------------------------------------------------------------------------
private void SearchFolders(String prmPath)
{
try
{
foreach (String folder in Directory.GetDirectories(prmPath))
{
// Recursive call for each subdirectory.
SearchFolders(folder);
// Create the list of files.
SearchFiles(folder);
}
}
catch (Exception) { }
}
//---------------------------------------------------------------------------
private void SearchFiles(String prmPath)
{
try
{
foreach (String file in Directory.GetFiles(prmPath))
{
FileInfo info = new FileInfo(file);
if (info.Extension == ".txt")
{
listBox1.Items.Add(info.Name);
}
}
}
catch (Exception) { }
}
//---------------------------------------------------------------------------
不仅是回收站,它还无法将多个文件的文件头读入您的系统目录。
答案 1 :(得分:0)
一般情况下,你可以这样做,这样你就可以对每个文件夹进行递归调用,只需使用try / catch块来查看你可以访问或不能访问的那些文件。但正如安德拉斯建议我也会选择已经存在的东西来节省你的时间