问题是,当我在文件夹中--例如在我的桌面中--或者它可能是任何其他文件夹时,我的程序运行得很顺利,但是一旦我尝试用"C:“驱动器作为路径迭代每个目录和子目录中的每个文件,它就会抛出一个错误”拒绝访问路径“。
如果我在迭代文件夹之前使用了try/catch,它只向我显示类似7个文件并停止。
我的代码是这样的:
try
{
foreach (string file in Directory.EnumerateFiles("C:\\", "*.*", SearchOption.AllDirectories))
{
textBox1.AppendText(file + "\r\n");
cpt++;
textBox2.AppendText(cpt.ToString() + "\r\n");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return cpt;
textBox1和textBox2的输出值是:
C:\appverifUI.dll 1
C:\bootTel.dat 2
C:\DumpStack.log.tmp 3
C:\hiberfil.sys 4
C:\pagefile.sys 5
C:\swapfile.sys 6
C:\vfcompat.dll 7
我需要它在.NET框架上工作
发布于 2022-10-12 15:49:42
普通应用程序无法访问计算机中的每个文件夹。当他们这样做时,他们会得到一个访问被拒绝的异常。您可以通过使用EnumerateFiles重载来避免这种情况,该重载接受IgnoreInaccessible设置为true
的EnumerationOptions参数:
var options=new EnumerationOptions {
IgnoreInaccessible = true,
RecurseSubdirectories = true
};
foreach (string file in Directory.EnumerateFiles("C:\\", "*.*",options))
{
...
}
https://stackoverflow.com/questions/74044535
复制相似问题