C#用system.io.directory.getfiles查找文件出错的问题

llsus 2013-01-25 10:04:23
偶然会发生"The path is not of a legal form”,平率还相当高,不知道什么,好好的路径,怎么会不合法呢?

程序的一个线程会监视一个目录,包括所有子目录,找个一个最新的文件,然后进行相关操作,如果发现这个最新的文件持续几分钟没有更新,就重新搜索一遍那个目录,再找一个最新的文件进行操作,如此循环。
搜索文件的函数如下:


//读取当面目录中最新的MDB文件
private string getlastWriteMdbfile(string path)
{
string rfn = "";
try
{
DateTime lstdt = new DateTime();
foreach (string f in System.IO.Directory.GetFiles(path, "*.mdb", System.IO.SearchOption.AllDirectories))
{
System.IO.FileInfo fi = new System.IO.FileInfo(f);
if (rfn == "")
{
lstdt = fi.LastWriteTime;
rfn = f;
}
else
{
if (fi.LastWriteTime > lstdt)
{
lstdt = fi.LastWriteTime;
rfn = f;
}
}
}
addlog ("获得文件名---"+rfn);
}
catch (Exception ex)
{
addlog("发生错误---" + ex.Message);
//错误日志中经常出现 “发生错误---The path is not of a legal form.”
}
return rfn;
}
...全文
265 9 点赞 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
llsus 2013-01-31
引用 8 楼 strife 的回复:
foreach (string f in System.IO.Directory.GetFiles(path, "*.mdb", System.IO.SearchOption.AllDirectories)) System.IO.Directory.GetFiles(path, "*.mdb", System.IO.SearchOption.AllDirectories)这个放在外面……
我这么试过了,没什么效果,我现在让工厂把旧文件移走了,文件少了,就没问题了,估计是函数本身的问题。
  • 打赏
  • 举报
回复
strife013 2013-01-25
foreach (string f in System.IO.Directory.GetFiles(path, "*.mdb", System.IO.SearchOption.AllDirectories)) System.IO.Directory.GetFiles(path, "*.mdb", System.IO.SearchOption.AllDirectories)这个放在外面,不要写在foreach里面试试
  • 打赏
  • 举报
回复
llsus 2013-01-25
Path是1级目录,里面的子目录可能三四级,最深应该不超过5级
  • 打赏
  • 举报
回复
ArmStronger 2013-01-25
难道是路径太长了?
  • 打赏
  • 举报
回复
llsus 2013-01-25
引用 2 楼 yxj19871219 的回复:
if (!string.IsNullOrWhitespace(f)) { System.IO.FileInfo fi = new System.IO.FileInfo(f); }
问题不在f上,是Directory.GetFiles就出错了,进不了循环
  • 打赏
  • 举报
回复
宝_爸 2013-01-25
  • 打赏
  • 举报
回复
if (!string.IsNullOrWhitespace(f))
{
   System.IO.FileInfo fi = new System.IO.FileInfo(f);
}
  • 打赏
  • 举报
回复
llsus 2013-01-25
上面的程序中,private string getlastWriteMdbfile(string path) 参数Path是个固定值。
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2013-01-25 10:04
社区公告

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