冒号/星号作为文件名分隔符?

时间:2009-11-03 07:17:03

标签: windows filenames

我正在寻找一个使用文件名分隔符的字符(我在明文字符串中存储多个文件名)。 Windows似乎不允许:?*<>"|,{{1文件名中包含{}和/。显然,\\不能使用,因为它们意味着路径中的某些东西。是否有任何理由不应该使用其他任何一个?我只是想,与//类似,其他不允许的字符可能具有特殊含义,我不应该假设它们不在路径名中。在其他7个字符中,为此目的使用绝对安全或绝对不安全吗?

6 个答案:

答案 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角色,可能会弄乱系统如何对齐文件名本身。