文件名末尾有点吗?

Jef*_* F. 6 windows windows-7 file-management filenames

愚蠢的问题:如果你重命名一个文件,说:image.jpgimage.jpg..就会消失。

这是 Windows 处理删除的方式吗?

phu*_*clv 8

不是一个错误。Win32命名空间中的文件名不允许在末尾包含点!

文件名或目录名请勿以空格或句点结尾。尽管底层文件系统可能支持此类名称,但 Windows shell 和用户界面不支持。但是,可以将句点指定为名称的第一个字符。例如,“.temp”。

命名文件、路径和命名空间

信息:不支持以空格或句点结尾的文件名

CreateFile()从文件和目录名中删除尾随空格和句点。这样做是为了与 FAT 和 HPFS 文件系统兼容。

信息:不支持以空格或句点结尾的文件名

当您将路径传递给 Win32 API 时,这些尾随点将在规范化阶段被去除

某些字符将被删除(除了分隔符和相关段之外)。

如果片段以单个句点结束,则该句点将被删除。单周期或双周期的一段属于上述相对成分规则的范围。三个句点(或更多)的段不符合任何这些规则,并且实际上是有效的文件/目录名称。

如果路径不以分隔符结尾,则所有尾随句点和空格(仅限字符 [sic] 代码 32)将被删除。如果最后一段只是一个单周期或双周期,则它属于上述相对组件规则。这条规则导致了创建带有尾随空格的目录的可能令人惊讶的能力。您只需添加一个尾随分隔符即可。

路径标准化

但这并不意味着无法创建这些文件,因为 NTFS完全兼容 POSIX,并且支持包含除/和 NUL 之外的任何字符的文件名。您只需添加\\?\前缀即可禁用文件名规范化

对于文件 I/O,“?” 路径字符串的前缀告诉 Windows API 禁用所有字符串解析并将其后面的字符串直接发送到文件系统

...

因为它关闭了路径字符串的自动扩展,所以“\?” 前缀还允许使用“..”和“.” 在路径名中,如果您尝试使用这些保留的相对路径说明符作为完全限定路径的一部分对文件执行操作,这会很有用。

命名文件、路径和命名空间


小智 2

我记得在 Windows XP 中它会简单地禁止它,因为它不受支持。我相信这次是Windows 7 中的一个错误。

您仍然可以使用命令行轻松恢复文件,方法是将它们移动到其他位置move