C# 文件权限排除
我想知道是否有办法解决我的代码问题:C# 文件权限排除,c#,foreach,C#,Foreach,我想知道是否有办法解决我的代码问题: DriveInfo[] dDrives = DriveInfo.GetDrives(); foreach(DriveInfo dDrive in dDrives) { try { string sDrive = dDrive.ToString(); string[] sSearch = Directory.GetFiles(sDrive, sFile, SearchOption.AllDirectories);
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块并继续搜索。非常感谢您的帮助,谢谢 您拥有的代码应该可以工作,尽管您确实应该重新考虑您的逻辑,但使用异常进行流控制显然是错误的 这将起作用,但不是最佳做法:
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
),以及返回的文件名列表。编辑:
删除了原来的答案,因为答案不正确
请参阅:有关您的问题的一些建议解决方案。是的,谢谢,使用异常的更好选择是什么?@Bali-您在代码中访问文件的确切位置?我假定它在这里:string[]sSearch=Directory.GetFiles(sDrive、sFile、SearchOption.AllDirectories)@巴厘岛-不要处理异常,而是记录它以查看到底发生了什么。VS给我的错误是在字符串[]sSearch=Directory.GetFiles(sDrive、sFile、SearchOption.AllDirectories)行中的“访问路径'C:\C:\$Recycle.Bin\S-1-5-21-232317210-4223013802-3689919456-1000\被拒绝”;另见: