我想知道是否有办法解决我对此代码的问题:
DriveInfo[] dDrives = DriveInfo.GetDrives();
foreach(DriveInfo dDrive in dDrives)
{
try
{
string sDrive = dDrive.ToString();
string[] sSearch = Directory.GetFiles(sDrive, sFile, SearchOption.AllDirectories);
foreach(string sResult in sSearch)
{
textBox2.Text = sResult + Environment.NewLine;
}
}
catch
{
}
}
当遇到因权限无法访问的文件时,它会转到catch并结束。我需要做的是,如果遇到无法访问的文件,请返回try块并继续搜索。非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
你所拥有的代码应该可以工作,虽然你真的应该重新考虑你的逻辑,使用流控制的异常是完全错误的。
这可行,但不是最佳做法:
string sDrive = dDrive.ToString();
try
{
string[] sSearch = Directory.GetFiles(sDrive, sFile, SearchOption.AllDirectories);
}
catch {}
foreach(string sResult in sSearch)
{
textBox2.Text = sResult + Environment.NewLine;
}
您到底在哪里访问文件?我只看到一个列表文件名(Directory.GetFiles
)的调用,以及返回的文件名列表。
答案 1 :(得分:1)
修改强> 删除原始答案不正确。
请参阅:UnauthorizedAccessException cannot resolve Directory.GetFiles failure了解针对您的问题的一些建议解决方案。