我正在寻找一个使用文件名分隔符的字符(我在明文字符串中存储多个文件名)。 Windows似乎不允许:
,?
,*
,<
,>
,"
,|
,{{1文件名中包含{}和/
。显然,\
和\
不能使用,因为它们意味着路径中的某些东西。是否有任何理由不应该使用其他任何一个?我只是想,与/
或/
类似,其他不允许的字符可能具有特殊含义,我不应该假设它们不在路径名中。在其他7个字符中,为此目的使用绝对安全或绝对不安全吗?
答案 0 :(得分:11)
字符:
和"
也用于路径中。冒号是驱动器单元分隔符,当空格是文件夹或文件名的一部分时,将使用引号。
搜索文件时,字符*
和?
将用作通配符。
字符<
和>
用于将应用程序的输入和输出重定向到文件或从文件重定向。
字符|
用于将一个应用程序的输出传输到另一个应用程序的输入。
我会选择管道字符来分隔文件名。它不用于路径,它的形状具有自然的分离质量。
另一种方法是在字符串中使用XML。有一些开销,一些字符需要编码,但优点是它可以处理任何字符,格式是自我解释和明确定义。
答案 1 :(得分:8)
Windows使用分号作为文件名分隔符:;
。查看PATH环境变量,它在路径元素之间填充;
。
(另外,在Python中,os.path.pathsep
返回";"
,而在Unix上扩展为":"
答案 2 :(得分:1)
我过去曾使用*
。可移植到Linux / Unix的原因。确实,从技术上讲,它也可以用在那些文件系统上。在实践中,所有常见操作系统都将其用作通配符,因此在文件名中这种情况并不常见。此外,如果在文件名中放置*
时程序确实中断,人们也不会感到惊讶。
答案 3 :(得分:0)
实际上,可以使用除\
之外的每个可能字符以编程方式创建文件。 (至少,这在某一时间是正确的,因此Windows可能会改变其策略。)当然,包含某些字符的文件将比其他文件更难以使用。
您使用什么来确定Windows允许的字符?
更新:Windows允许的字符集也由底层文件系统和其他因素决定。有一个blog entry on MSDN可以更详细地解释这一点。
答案 4 :(得分:0)
为什么不使用任何带有ALT键组合的字符,如‡(Alt + 0135)作为分隔符?
答案 5 :(得分:0)
如果你需要的只是冒号的外观,并且将以编程方式创建它,为什么不使用只是看起来像的UTF-8字符结肠?
我的第一个选择是修饰字母(U + A789),因为它是一个典型的RTL字符,看起来很像冒号。这是我在文件名中需要完整DateTime时使用的内容,例如file_2017-05-04_16꞉45꞉22_clientNo.jpg
我会远离像Hebrew Punctuation Sof Pasuq(U + 05C3)这样的角色,因为它是一个LTR角色,可能会弄乱系统如何对齐文件名本身。