我正在创建一个类来存储文件名。为此,我需要确切知道哪些字符无效以及哪些字符作为前导/尾随字符无效。
Windows 资源管理器在命名文件时会自动修剪前导和尾随空白字符,因此在构造文件名实例时需要修剪相同的字符。
我考虑过使用 string.Trim(),但假设它修剪的默认字符集与操作系统的无效前导/尾随文件名字符完全一致是天真的。
string.Trim() 的文档说它默认修剪以下字符:U+0009、U+000A、U+000B、U+000C、U+000D、U+0020、U+0085、U+00A0、U +1680, U+2000, U+2001, U+2002, U+2003, U+2004, U+2005, U+2006, U+2007, U+2008, U+2009, U+200A, U+200B , U+2028, U+2029, U+3000, U+FEFF
不幸的是,上述某些字符在文件中并非无效,因为它们不在 System.IO.Path.GetInvalidFileNameChars 返回的字符集中。
然后我是否更正了 string.Trim() 可能会从文件名中删除 VALID 前导/尾随字符,从而损坏文件名?
Windows Vista 操作系统中文件名的无效前导/尾随字符到底是什么? 我知道它们不一定与文件系统本身相同,因为操作系统可以在不同的文件系统上运行。