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

Bi.*_*Bi. 2 .net c#

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

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

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

如果您注意到它跟踪文件时似乎在路径上附加了"\\".知道问题可能是什么?

Aar*_*ght 6

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

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

string directoryName = Path.GetDirectoryName(e.FullPath);
Run Code Online (Sandbox Code Playgroud)

同样非常奇怪的FileSystemWatcher是,它正在给你一条带有正斜杠的道路; 我无法与你所看到的东西争论,但那些真的应该是反斜杠.您可能需要检查该Path属性FileSystemWatcher以查看该路径是否是硬编码的.


SwD*_*n81 5

这会带来同样的问题吗?

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