Directory.GetFiles()遇到不能访问的文件

Marooza 2009-04-03 08:03:05
今天在使用Directory.GetFiles的时候遇到一个问题
我准备枚举某一磁盘分区的所有文件,但是vista下有些文件拒绝访问,这时
foreach (string strfilename in Directory.GetFiles(strPath))
语句就会抛异常,getFiles还没完成就停止了
而我又想列举出除了不允许访问的那几个文件外的其他文件
Directory.GetFiles只用一个语句就在做重复的工作,所以
如果用try catch的话那么只要一遇到不能访问的文件getfiles还没结束就停止了
请问各位有什么好的解决方案没。。。谢谢各位了
...全文
828 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mjyangyang 2010-01-08
  • 打赏
  • 举报
回复
顶上去~!
mjyangyang 2010-01-07
  • 打赏
  • 举报
回复
这个问题也困扰我呢,怎么才能跳过没有权限访问的文件夹和文件呀,请高手指点~!
mjyangyang 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yangqidong 的回复:]
我也做过类似的程序
我觉得这句代码
foreach (string strfilename in Directory.GetFiles(strPath))
出现异常并不是因为strPath下面的文件拒绝访问,
而是strPath本身拒绝访问,比如“System Volume Information”这个目录,
我的做法是:
try
{
  foreach (string strfilename in Directory.GetFiles(strPath))
  {
  }
}
catch(UnauthorizedAccessException uae)
{
  //对strPath没有访问权限
}
[/Quote]

这样做异常还是会出现吧,getFile()还是没执行完就退出了吧,有能跳过没有权限访问的目录或文件的思路吗?
zzxap 2009-04-03
  • 打赏
  • 举报
回复
if file.exists
zzxap 2009-04-03
  • 打赏
  • 举报
回复
先判断有没有此类文件,有的话再遍历和捕获异常(可不处理)
yangqidong 2009-04-03
  • 打赏
  • 举报
回复
我也做过类似的程序
我觉得这句代码
foreach (string strfilename in Directory.GetFiles(strPath))
出现异常并不是因为strPath下面的文件拒绝访问,
而是strPath本身拒绝访问,比如“System Volume Information”这个目录,
我的做法是:
try
{
foreach (string strfilename in Directory.GetFiles(strPath))
{
}
}
catch(UnauthorizedAccessException uae)
{
//对strPath没有访问权限
}
wuyq11 2009-04-03
  • 打赏
  • 举报
回复
string[] fileNames = Directory.GetFiles(Environment.CurrentDirectory, "*.dll");
foreach (string fileName in fileNames)
{
}
coodd 2009-04-03
  • 打赏
  • 举报
回复
进vista默认不是管理员的,不是管理员的话,用getfiles的第二个重载,选择要取得文件类型,只能这样
cppfaq 2009-04-03
  • 打赏
  • 举报
回复
是不是用管理员run的

实在不行就cmd dir得了

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧