栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

文件名中不允许使用什么字符序列?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

文件名中不允许使用什么字符序列?

自从您详细讨论了Linux以来,您的问题有些令人困惑,但随后在对另一个答案的评论中,您说您正在生成供人们下载的文件名,这大概意味着您绝对无法控制要使用的文件系统和操作系统。文件将存储在Linux上完全不相关。

出于此答案的目的,我将假设您的问题是错误的,并且您的评论是正确的。

当前使用的绝大多数操作系统和文件系统大致可分为三类:POSIX,Windows和MacOS。

POSIX规范对于保证在 所有
POSIX系统之间可移植的文件名是什么样子非常明确。您可以使用的字符在开放组基本规范的3.276节(便携式文件名字符集)中定义为:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 ._-

您可以依赖的最大文件名长度在第13.23.3.5节(

<limits.h>
最小值)中定义为
14
。(相关常数是
_POSIX_NAME_MAX
。)

因此,文件名最长为14个字符,并且仅包含上面列出的65个字符,可以在所有POSIX兼容系统上安全使用,这可以为您提供24407335764928225040435790组合(或大约84位)。

如果您不想惹恼用户,则应增加两个限制:不要以破折号或点开头。以点开头的文件名通常被解释为“隐藏”文件,除非明确要求,否则不会显示在目录列表中。并且以短划线开头的文件名可能被许多命令解释为选项。(旁注:令人惊讶的是,有多少用户不了解

rm./-rf
rm -- -rf
技巧。)

这使您处于23656340818315048885345458组合(仍为84位)。

Windows为此添加了两个新的限制:文件名不能以点结尾,并且文件名不区分大小写。这样会将字符集从65个减少到39个字符(第一个字符为37个,最后一个字符为38个)。它没有增加任何长度限制,Windows可以处理14个字符。

这将可能的组合减少到17866587696996781449603(73位)。

另一个限制是Windows将最后一个点之后的所有内容都视为文件扩展名,表示文件的类型。如果要避免潜在的混乱(例如,如果生成的文件名类似于

abc.mp3
文本文件),则应该完全避免点。

您仍然有13090925539866773438463组合(73位)。

如果您要担心DOS,则存在其他限制:文件名由一个或两个部分(由点分隔)组成,其中两个部分都不能包含点。第一部分的最大长度为8,第二部分为3个字符。同样,第二部分通常保留以指示文件类型,仅剩下8个字符。

现在您有4347792138495个可能的文件名或41位。

好消息是,您可以使用3个字符的扩展名实际 正确地 指示文件类型,而不会破坏POSIX文件名的限制(8 + 3 + 1 = 12 <14)。

如果希望用户能够将文件刻录到以ISO9660级别1格式化的CD-R上,则必须在任何地方都禁止连字符,而不仅仅是第一个字符。现在,剩下的字符集看起来像

ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

即可获得3512479453921组合(41位)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/405678.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号