我只是偶然发现了System.IO.Directory GetFiles方法的未logging行为。
只要传递给方法的searchPattern参数包含保留的Windows设备名称(如"nul.*"或"aux.bmp" ,该方法就会返回一个包含不存在文件名称的数组,如C:Usersft1nul或D:aux等。
我不知道这些设备名称是否具有特殊的含义,如“。” 或“..”,或者这只是一种错误。 无论如何,这似乎仍然很奇怪。 例如,C#中的这个代码片段:
string[] fileNames = Directory.GetFiles(@"C:D:.......","con.txt"); foreach (string fileName in fileNames) Console.WriteLine(fileName);
版画
如何将aspnet_compiler更新到4.6.1?
服务无法启动。 服务进程无法连接到服务控制器
让Windows决定如何打开/运行该文件?
Mono应用程序在尝试更改控制台前景色时失败,并出现ArgumentNullException
如何检查.NET框架是否安装
C:D:.......con
任何线索?
在Linux中使用Visual Studio C#程序
如何从.cpp文件访问文本框?
如何为xbuild添加缺less的程序集引用? (单声道/ Linux)的
如何将引发的exception映射到事件ID以进行日志logging?
PrincipalContext.ValidateCredentials在XP上始终使用Machine ContextType返回False
这是已知的。 这是一个关于命名文件,路径和命名空间(Windows)的操作系统设计,
摘抄:
CON,PRN,AUX,NUL,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9,LPT1,LPT2,LPT3,LPT4,LPT5, LPT6,LPT7,LPT8和LPT9。 还要避免这些名字后跟一个扩展名; 例如,不建议使用NUL.txt。 有关更多信息,请参阅命名空间。
这些基本上是文件名别名(名称空间),所以它们总是存在于全局(在每个文件夹中)。 如果你试图枚举它们,你会得到它们,因为它们确实存在。
这些是MSDOS / NTFS的保留字 。
维基百科 :
另外,在Windows和DOS实用程序中,某些单词也可能被保留,不能用作文件名。 例如,DOS设备文件:
CON,PRN,AUX,CLOCK$,NUL COM0,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9 LPT0,LPT1,LPT2,LPT3,LPT4,LPT5,LPT6,LPT7,LPT8,and LPT9.
具有这些限制的系统会导致与其他一些文件系统不兼容。 例如,Windows将无法处理或提出这些合法的UNIX文件名错误报告:aux.c,q“uote”s.txt或NUL.txt。
$Mft,$MftMirr,$LogFile,$Volume,$AttrDef,$Bitmap,$Boot,$BadClus,$Secure,$Upcase,$Extend,$Quota,$ObjId and $Reparse
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。