![信息: 文件名以空格或句点结尾不受支持](https://linux22.com/image/1261348/%E4%BF%A1%E6%81%AF%EF%BC%9A%20%E6%96%87%E4%BB%B6%E5%90%8D%E4%BB%A5%E7%A9%BA%E6%A0%BC%E6%88%96%E5%8F%A5%E7%82%B9%E7%BB%93%E5%B0%BE%E4%B8%8D%E5%8F%97%E6%94%AF%E6%8C%81.png)
愚蠢的问题:如果你重命名一个文件,说:image.jpg
它image.jpg..
就会消失。
这是 Windows 处理删除或其他事情的方式吗?
答案1
我记得在 Windows XP 中它会直接禁止它不支持我相信这是Windows 7 中的错误这阵子。
您仍然可以使用命令行轻松地恢复文件,只需使用命令将文件移动到其他地方即可move
。
- 微软学习
文件、路径和命名空间:命名约定
答案2
它是不是一个错误。Win32 命名空间中的文件名末尾不允许包含点!!!
不要以空格或句点结尾文件或目录名称。虽然底层文件系统可能支持此类名称,但 Windows shell 和用户界面不支持。不过,可以将句点指定为名称的第一个字符。例如“.temp”。
信息: 文件名以空格或句点结尾不受支持
CreateFile()
删除文件和目录名称中的尾随空格和句点。这样做是为了与 FAT 和 HPFS 文件系统兼容。
当你将路径传递给 Win32 API 时,这些尾随的点将在规范化阶段被删除
一些字符将被删除(分隔符和相关段除外)。
如果片段以单个句号结尾,则该句号将被删除。单个或两个句号的片段符合上述相对组件规则。三个句号(或更多)的片段不符合这些规则中的任何一个,实际上是有效的文件/目录名称。
如果路径不是以分隔符结尾,则所有尾随句点和空格(仅限字符代码 32)都将被删除。如果最后一段只是一个或两个句点,则它属于上述相对组件规则。此规则可能导致创建带有尾随空格的目录的能力令人意外。您只需添加尾随分隔符即可。
但这并不意味着无法创建这些文件,因为 NTFS完全兼容 POSIX并且支持文件名中包含除/
NUL 之外的任何字符。你只需要添加\\?\
前缀禁用文件名规范化
对于文件 I/O,路径字符串的“?”前缀告诉 Windows API 禁用所有字符串解析,并将其后面的字符串直接发送到文件系统
...
因为它关闭了路径字符串的自动扩展,“\?”前缀还允许在路径名中使用“..”和“.”,如果您尝试使用这些保留的相对路径说明符作为完全限定路径的一部分对文件执行操作,这将非常有用。