IO异常:使用File System Watcher OnChanged事件中的目录,目录名无效

时间:2010-04-27 02:35:31

标签: c# .net

我的C#应用​​程序为实现filewatcher的以下代码抛出System.IO.IOExcepton(目录名无效):

   public void OnChanged(object source, FileSystemEventArgs e)
   {
          DirectoryInfo dList = new DirectoryInfo(e.FullPath);
          FileInfo[] TxtFiles = dList.GetFiles("*.TXT");
   }

e.FullPath是“C:/ Documents and Settings / Bi / Application Data / TestApp / Reports \\ 0MA01P62240_000005798__TRI__4947712701738551.TXT”。

如果您发现它跟踪文件时似乎在路径上附加了“\\”。知道问题可能是什么?

3 个答案:

答案 0 :(得分:6)

路径C:/Documents and Settings/Bi/Application Data/TestApp/Reports\\0MA01P62240_000005798_TRI_4947712701738551.TXT不是目录名,而是文件名。这就是它说目录名无效的原因。

使用Path.GetDirectoryName获取实际目录,如:

string directoryName = Path.GetDirectoryName(e.FullPath);

FileSystemWatcher正在给你一条带有正斜杠的路径,这也很奇怪;我无法与你所看到的东西争论,但那些真的应该是反斜杠。您可能需要检查Path的{​​{1}}属性,以查看该路径是否为硬编码。

答案 1 :(得分:4)

这会产生同样的问题吗?

    FileInfo fi = new FileInfo(e.FullPath);
    DirectoryInfo di = fi.Directory;
    FileInfo[] TxtFiles = di.GetFiles("*.TXT");

答案 2 :(得分:0)

事件确实有错误的价值,这很奇怪。当然你可以用“/”替换“\”,但这不是最好的方法。我想你最好告诉我们你是如何触发事件的。你知道除非你自己传递这个值,否则C#几乎不可能给出错误的事件参数。