ファイル名を保存するクラスを作成しています。そのためには、どの文字が無効で、どの文字が先頭/末尾の文字として無効であるかを正確に知る必要があります。
Windows エクスプローラーは、ファイルに名前を付けるときに先頭と末尾の空白文字を自動的に削除するため、ファイル名インスタンスを作成するときに同じ文字を削除する必要があります。
string.Trim() を使用することを考えましたが、トリミングするデフォルトの文字セットが、OS の無効な先頭/末尾のファイル名文字と正確に一致すると仮定するのは単純です。
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() がファイル名から有効な先頭/末尾の文字を削除する可能性があるため、ファイル名が破損する可能性があることを修正しますか?
Windows Vista OS のファイル名の無効な先頭/末尾文字は正確には何ですか? OSは異なるファイルシステムで実行できるため、必ずしもファイルシステム自体と同じではないことを理解しています。