在Windows中获取保留的文件名



众所周知,您无法在Windows中创建名为con(例如con.txt)的文件。因此,在我的应用程序中,用户可以输入自定义文件名(不是通过SaveFileDialog,只是通过文本框输入名称,而不是完整路径),并且我希望在用户输入无效文件名时显示错误消息。是否有办法获得保留的Windows文件名(con, prn, lpt等)的完整列表?

不要使用以下保留名称作为文件名:

CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9。

也要避免这些名字后面紧跟着扩展名;例如,不建议输入"null .txt"。

根据:https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx

看这里:保留的文件名

Windows操作系统中保留的文件名

辅助反对钟元空打印com1com2com3com4为com5com6com7com8com9lpt1lpt2lpt3lpt4lpt5lpt6lpt7lpt8lpt9

您可以在应用程序中使用GetFileType并禁止FILE_TYPE_CHAR的文件。这也适用于保留名称,如con.txt等。

尝试在%temp%文件夹中创建该文件。如果成功,则表示该名称有效。如果失败,您可以向用户显示您的消息。

另外,我会在创建之前检查已经存在的同名文件。

别忘了删掉

CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9

尽管你应该在try catch块下使用你的代码并捕获异常system.IO.DirectoryNotFoundException

传递文件名给GetFullPathName。如果结果以\.开头,则表示设备名称。Java使用这个方法。

此方法仅适用于基于nt的Windows。如果您仍然支持Win9x,则必须调用16位DOS程序来遍历DOS设备链。

最新更新