在一个拥有有效路径C:\Users\David的Vista机器上,以David用户身份运行Directory.GetFiles(@"C:\Users\David")会抛出以下ArgumentException异常。在Windows资源管理器中,David用户可以正常查看该目录的内容。
这台Vista机器被一台运行MacFuse的Mac访问过,所以该目录中包含一个看起来名为“._Icon”的文件,但实际上可能包含一些非法字符。我认为这就是错误的根源。当Directory.GetFiles()遇到不喜欢的文件名时抛出异常后,我面临解决问题的困境。是否有其他列出文件内容的替代方法,不会抛出这样的异常呢?
至于这个特定的文件,我怀疑文件名可能包含Windows资源管理器或命令提示符未显示的某些字符。
最后提醒一下:
System.ArgumentException message: Illegal characters in path.
Argument: ""
Stack trace:
at System.IO.Path.CheckInvalidPathChars(String path)
at System.IO.Path.InternalCombine(String path1, String path2)
at System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption)
at System.IO.Directory.GetFiles(String path, String searchPattern, SearchOption searchOption)
at System.IO.Directory.GetFiles(String path)
at Microsoft.Samples.XFileExplorer.ContentView.CreateContentDataTable(String CurrentFolder) in C:\Users\david\Downloads\MEF Preview 5\MEF Preview 5\Samples\XFileExplorer\XFileExplorer\ContentView.xaml.cs:line 108
这台Vista机器被一台运行MacFuse的Mac访问过,所以该目录中包含一个看起来名为“._Icon”的文件,但实际上可能包含一些非法字符。我认为这就是错误的根源。当Directory.GetFiles()遇到不喜欢的文件名时抛出异常后,我面临解决问题的困境。是否有其他列出文件内容的替代方法,不会抛出这样的异常呢?
至于这个特定的文件,我怀疑文件名可能包含Windows资源管理器或命令提示符未显示的某些字符。
C:\Users\david>dir ._Icon
Volume in drive C is Bootcamp
Volume Serial Number is XXXX-XXX
Directory of C:\Users\david
File Not Found
最后提醒一下:
C:\Users\david>dir ._Icon*
Volume in drive C is Bootcamp
Volume Serial Number is XXXX-XXX
Directory of C:\Users\david
05/25/2008 07:40 AM 43,296 ._Icon
1 File(s) 43,296 bytes
0 Dir(s) 58,950,623,232 bytes free
通过SMB查看文件,看起来该文件实际上命名为“._Icon?”。每次我尝试从Mac中删除该文件时,该文件似乎立即重新出现。