我知道/在Linux中是非法的,下面这些在Windows中是非法的 (我认为)*。" / \ []:;|,
我还遗漏了什么?
然而,我需要一份全面的指南,一份考虑到各种因素的指南 双字节字符。链接到外部资源对我来说很好。
我需要首先在文件系统上创建一个目录,其名称可能是 包含禁用字符,所以我计划将这些字符替换为 下划线。然后,我需要将这个目录及其内容写入一个zip文件 (使用Java),因此关于zip目录名称的任何其他建议 不胜感激。
我知道/在Linux中是非法的,下面这些在Windows中是非法的 (我认为)*。" / \ []:;|,
我还遗漏了什么?
然而,我需要一份全面的指南,一份考虑到各种因素的指南 双字节字符。链接到外部资源对我来说很好。
我需要首先在文件系统上创建一个目录,其名称可能是 包含禁用字符,所以我计划将这些字符替换为 下划线。然后,我需要将这个目录及其内容写入一个zip文件 (使用Java),因此关于zip目录名称的任何其他建议 不胜感激。
当前回答
. net框架系统。IO对于无效的文件系统字符提供如下功能:
路径。GetInvalidFileNameChars 路径。GetInvalidPathChars
这些函数应该根据. net运行时所在的平台返回适当的结果。也就是说,这些函数的文档页中的备注说:
方法返回的数组不保证包含 文件和目录中无效的完整字符集 的名字。完整的无效字符集可能因文件系统而异。
其他回答
对于任何寻找正则表达式的人:
const BLACKLIST = /[<>:"\/\\|?*]/g;
. net框架系统。IO对于无效的文件系统字符提供如下功能:
路径。GetInvalidFileNameChars 路径。GetInvalidPathChars
这些函数应该根据. net运行时所在的平台返回适当的结果。也就是说,这些函数的文档页中的备注说:
方法返回的数组不保证包含 文件和目录中无效的完整字符集 的名字。完整的无效字符集可能因文件系统而异。
I always assumed that banned characters in Windows filenames meant that all exotic characters would also be outlawed. The inability to use ?, / and : in particular irked me. One day I discovered that it was virtually only those chars which were banned. Other Unicode characters may be used. So the nearest Unicode characters to the banned ones I could find were identified and MS Word macros were made for them as Alt+?, Alt+: etc. Now I form the filename in Word, using the substitute chars, and copy it to the Windows filename. So far I have had no problems.
下面是替换字符(Alt +十进制Unicode):
⃰ ⇔ Alt8432 ⁄ ⇔ Alt8260 ⃥ ⇔ Alt8421 ∣ ⇔ Alt8739 ⵦ ⇔ Alt11622 ⮚ ⇔ Alt11162 ‽ ⇔ Alt8253 ፡ ⇔ Alt4961 ‵‵ ⇔ Alt8246 “ ⇔ Alt8243
作为测试,我用所有这些字符组成了一个文件名,Windows接受了它。
在Windows中创建internet快捷方式时,为了创建文件名,它会跳过非法字符,除了正斜杠被转换为减号。
我也有同样的需求,正在寻找推荐信或标准推荐信,偶然发现了这条线索。我目前在文件和目录名中应该避免的字符黑名单是:
$CharactersInvalidForFileName = {
"pound" -> "#",
"left angle bracket" -> "<",
"dollar sign" -> "$",
"plus sign" -> "+",
"percent" -> "%",
"right angle bracket" -> ">",
"exclamation point" -> "!",
"backtick" -> "`",
"ampersand" -> "&",
"asterisk" -> "*",
"single quotes" -> "“",
"pipe" -> "|",
"left bracket" -> "{",
"question mark" -> "?",
"double quotes" -> "”",
"equal sign" -> "=",
"right bracket" -> "}",
"forward slash" -> "/",
"colon" -> ":",
"back slash" -> "\\",
"lank spaces" -> "b",
"at sign" -> "@"
};