在 Windows 有一些字符是不能作为文件名,尝试重命名一个文件,输入/
就可以看到windows 提示的不能作为文件名的字符
那么具体是包括哪些符号不能作为文件名?
- Tilde (
~
) - Number sign (
#
) - Percent (
%
) - Ampersand (
&
) - Asterisk (
*
) - Braces (
{
}
) - Backslash (\)
- Colon (
:
) - Angle brackets (
<
>
) - Question mark (
?
) - Slash (
/
) - Plus sign (
+
) - Pipe (
|
) - Quotation mark (
"
)
上面这些字符不能用来文件名和文件夹名
而且在 windows 的要求,文件是需要有文件名的,虽然你也可以创建.file
这样的文件,但是用户是难以自己输入这样的文件名。
之外还有一些文件名是保留,不能创建这样的文件名
CON, PRN, AUX, CLOCK$, NUL
COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9
LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.
尝试新建一个文本,然后把他文件名命名为上面的任意一个,基本windows会说不能把文件命名
那么是不是把这些字符串拿出来判断?实际上微软已经做了这个了,因为在不同的系统,可能之后会添加新的字符串,所以最好不要自己写。
可以使用微软给的函数System.IO.Path.GetInvalidFileNameChars
,下面的代码可以直接使用