在Windows中获取保留的文件名
本文关键字:文件名 保留 获取 Windows | 更新日期: 2023-09-27 18:12:33
众所周知,您无法在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设备链。