Axa*_*dax 7 .net c# filesystems fileinfo
不知何故,一个文件出现在我的一个目录中,并且它的扩展名末尾有空格 - 它的名字是"test.txt".奇怪的是,Directory.GetFiles()返回我这个文件的路径,但我无法用FileInfo类检索文件信息.
错误在此处显示:
DirectoryInfo di = new DirectoryInfo("c:\\somedir");
FileInfo fi = di.GetFileSystemInfos("test*")[0] as FileInfo;
//correctly fi.FullName is "c:\somedir\test.txt "
//but fi.Exists==false (!)
Run Code Online (Sandbox Code Playgroud)
FileInfo类是否已损坏?我可以以某种方式检索有关此文件的信息吗?我真的不知道该文件是如何出现在我的文件系统上的,我无法再重新创建它们.
我尝试使用这种类型的扩展创建新文件的所有尝试都失败了,但是现在我的程序在绑定它时崩溃了.我可以在找到文件时轻松处理异常,但男孩我很好奇!
使用空格结束文件名被记录为坏主意.
从MSDN "命名文件,路径和命名空间(Windows)":
- 不要使用空格或句点结束文件或目录名称.虽然底层文件系统可能支持此类名称,但Windows shell和用户界面却不支持.
此外,KB文章"INFO:文件名以空格或句点结束不支持":
Macintosh客户端在Windows NT服务器上创建文件时可能会出现问题.不执行删除尾随空格和句点的代码,Macintosh用户获取正确的标点文件名.Win32 API
FindFirstFile()并FindNextFile()返回以空格或句点结尾的文件名; 但是,无法使用Win32 API创建或打开文件.
DirectoryInfo可能使用FindFirstFile()和朋友来制作目录列表.File.Exists最有可能实现GetFileAttributes(),可能会遇到与之相同的问题CreateFile()并报告不存在的文件.
因此,在.NET中没有特别的问题,但在Windows本身.