いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

パスとファイル名にて不正な文字が利用されていないかチェック (InvalidPathChars, InvalidFileNameChars)


よく忘れるので、メモメモ。
Pathクラスには、パスに利用できない文字を取得するGetInvalidPathCharsメソッド
とファイル名に利用できない文字を取得するGetInvalidFileNameCharsメソッドが
用意されています。


これを利用すると不正文字が使われているかどうかを簡単にチェックできます。
以下サンプルです。

    #region GetInvalidPathCharsAndGetInvalidFileNameCharsSamples-01
    /// <summary>
    /// PathクラスのGetInvalidPathCharsメソッドとGetInvalidFileNameCharsメソッドのサンプルです。
    /// </summary>
    public class GetInvalidPathCharsAndGetInvalidFileNameCharsSamples01 : IExecutable
    {
        public void Execute()
        {
            //
            // Pathクラスには、パス名及びファイル名に利用できない文字を取得するメソッドが存在する。
            //     パス名:GetInvalidPathChars
            // ファイル名:GetInvalidFileNameChars
            //
            // 引数などで渡されたパスやファイル名に対して不正な文字が利用されていないか
            // チェックする際などに利用できる。
            //
            // 戻り値は、どちらもcharの配列となっている。
            //
            char[] invalidPathChars     = Path.GetInvalidPathChars();
            char[] invalidFileNameChars = Path.GetInvalidFileNameChars();
            
            string tmpPath     = @"c:\usr\local\tmp_<path>_tmp";
            string tmpFileName = @"tmp_<filename>_tmp.|||";
            
            Console.WriteLine("不正なパス文字が存在してる?       = {0}", invalidPathChars.Any(ch => tmpPath.Contains(ch)));
            Console.WriteLine("不正なファイル名文字が存在してる? = {0}", invalidFileNameChars.Any(ch => tmpFileName.Contains(ch)));
        }
    }
    #endregion


実行すると以下のように表示されます。

  不正なパス文字が存在してる?       = True
  不正なファイル名文字が存在してる? = True

================================
過去の記事については、以下のページからご参照下さい。