|
1
181
禁止使用的文件名字符的__综合指南__在Windows上不起作用,因为它保留文件名和字符。是的,像这样的人物
Windows不区分大小写字符,因此无法创建名为
通常,不能使用用户生成的文本来创建Windows目录名。如果你想让用户说出他们想要的任何名字,你必须创建安全的名字,比如
如果您绝对必须允许用户生成的文件夹名,那么判断它们是否无效的唯一方法是捕获异常并假定名称无效。即使这样也充满了危险,因为拒绝访问、脱机驱动器和驱动器空间不足引发的异常与无效名称引发的异常重叠。你在打开一个巨大的伤害罐。 |
|
|
2
336
让我们保持简单,首先回答问题。
|
|
3
54
在Linux和其他与Unix相关的系统中,只有两个字符不能出现在文件或目录的名称中,它们是nul
谣言
一
Steven Bourne(以“shell”闻名)是否有一个目录,其中包含254个文件,每个字母(字符代码)对应一个文件名(不包括
其他人已经讨论过窗户规则。 请注意,MacOS X具有不区分大小写的文件系统。
一 是Kernighan和Pike加入的 The Practice of Programming 世卫组织在第6章,测试,第6.5节压力测试中说过:
|
|
|
4
30
您可以使用 白名单 . 综上所述,在文件或目录名上下文中有意义的字符范围非常短,除非您有一些非常具体的命名要求,否则如果您的用户不能使用整个ASCII表,他们就不会将其与您的应用程序对立起来。 它并不能解决目标文件系统中保留名称的问题,但是使用白名单可以更容易地降低源文件系统的风险。 本着这种精神,这是一系列可以被视为安全的字符:
以及您希望允许的任何其他安全字符。除此之外,你只需要执行一些 关于空格和点的附加规则 . 这通常就足够了:
这已经允许使用非常复杂和荒谬的名称。例如,这些名称可以使用这些规则,并且在Windows/Linux中是有效的文件名:
本质上,即使白名单中的字符太少,您仍然应该决定什么是真正有意义的,并相应地验证/调整名称。在我的一个应用程序中,我使用了与上面相同的规则,但是去掉了所有重复的点和空格。 |
|
|
5
25
好吧,如果只是为了研究的目的,那么你最好的选择就是看看 this Wikipedia entry on Filenames . 如果要编写一个可移植函数来验证用户输入并基于该函数创建文件名,那么简短的答案是 不要 .看看像Perl这样的可移植模块 File::Spec 一瞥完成这样一个“简单”的任务所需要的所有跳跃。 |
|
|
6
23
让Windows告诉您答案的简单方法是尝试通过资源管理器重命名文件,然后键入/作为新名称。Windows将弹出一个消息框,告诉您非法字符的列表。
|
|
|
7
5
对于Windows,可以使用PowerShell检查它
要显示UTF-8代码,可以转换
|
|
8
1
截至2017年4月18日,本主题的答案中没有明显的简单的黑名单或白名单字符和文件名,而且有许多答案。 我能想到的最好的建议是让用户随意命名文件。当应用程序试图保存文件时,使用错误处理程序,捕获任何异常,假定文件名是错误的(显然在确保保存路径正确之后),并提示用户输入新的文件名。为了获得最佳结果,请将此检查过程放入一个循环中,该循环将一直持续,直到用户正确执行或放弃为止。为我工作得最好(至少在维也纳国际机场)。 |
|
9
0
在Windows中创建Internet快捷方式时,若要创建文件名,它将跳过非法字符,但正斜杠除外,正斜杠转换为减号。 |
|
|
10
-1
尽管唯一非法的Unix字符可能是
例如,虽然命名文件可能是合法的
同样,也可以命名一个文件
|
|
|
11
-1
在UNIX shell中,几乎可以用单引号引用每个字符
因此,您应该避免使用所有控制字符,因为它们太难在shell中输入。其余的仍然很有趣,尤其是以破折号开头的文件,因为大多数命令将这些作为选项读取,除非您有两个破折号。
如果你想表现得好一点,不要使用shell和典型命令中用作句法元素的任何字符,有时是位置相关的,因此你仍然可以使用
|
|
|
12
-5
我也有同样的需求,正在寻找推荐或标准参考资料,并且遇到了这个问题。我当前应该在文件名和目录名中避免的字符黑名单是:
|
|
|
Lanz Joshua · 如何在PHP中从文件名中获取特定单词? 8 年前 |
|
|
arc95 · 获取名称首字母相同的所有文件或图像 8 年前 |
|
|
Luca Ricci · Grunt文件名作为变量 8 年前 |
|
|
MakkaCha · 使用批处理脚本从文件名中删除日期 8 年前 |
|
|
XtremeBaumer · FilenameFilter产生神秘结果 8 年前 |
|
|
JKU · vimrc文件中的“%:r”是什么? 8 年前 |