在 Windows 有一些字符是不能作为文件名,尝试重命名一个文件,输入/
就可以看到 windows 提示的不能作为文件名的字符
那么具体是包括哪些符号不能作为文件名?
- Tilde (
~
)
- Number sign (
#
)
- Percent (
%
)
- Ampersand (
&
)
- Asterisk (
*
)
- Braces (
{
}
)
- Backslash (\)
- Colon (
:
)
- Angle brackets (
<
>
)
- Question mark (
?
)
- Slash (
/
)
- Plus sign (
+
)
- Pipe (
|
)
- Quotation mark (
"
)
上面这些字符不能用来文件名和文件夹名
而且在 windows 的要求,文件是需要有文件名的,虽然你也可以创建.file
这样的文件,但是用户是难以自己输入这样的文件名。
之外还有一些文件名是保留的,不能创建下列的文件名
尝试新建一个文本,然后把他文件名命名为上面列表里的任意一个,基本上你都会看到系统给你报错
那么是不是把这些字符串拿出来判断?实际上微软已经做了这个了,因为在不同的系统,可能之后会添加新的字符串,所以最好不要自己写。
可以使用微软给的函数System.IO.Path.GetInvalidFileNameChars
,下面的代码可以直接使用
如果确实需要显示文件名,请使用下面代码
上面的代码是 jnm2 大神写的
参见:Information about the characters that you cannot use in site names, folder names, and file names in SharePoint
c# - How to make a valid Windows filename from an arbitrary string
原文链接: http://blog.lindexi.com/post/C-%E4%B8%8D%E8%83%BD%E7%94%A8%E4%BA%8E%E6%96%87%E4%BB%B6%E5%90%8D%E7%9A%84%E5%AD%97%E7%AC%A6
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系。