自分のブログ名

sheephumanのブログ

ひつじ好きな人間のブログ。

【C#】File.Exsistsでファイル名・パスに空白が入っている場合の対処

 

File.Exsistsメソッドで、"C:\\te st\\file .txt" のような半角・全角スペース入りファイルパスがあるとFalseを返す問題。SequenceEqualを使ってあっさり解決。

同名のメソッドだとアレなんで自作クラスとして実装

 

 

  public class Remake_FileExsists
    {
        bool isEqual; 

  public bool FileExsists(string convertFileName)
        {
            var getFilesList = getFileNames(convertFileName);

            foreach (string targetList in getFilesList)
            {
              isEqual =  targetList.SequenceEqual(convertFileName);

                if (isEqual)
                    return isEqual;
            }
            return isEqual;
        }

        string getFileNames(string targetForder)
        {
          string target = Path.GetDirectoryName(targetForder);

            string destinationFiles = Directory.GetFiles(target);

            return destinationFiles;
        }

   }

 

 

一応こんな感じで。単純なファイルの存在チェックはこれで何とかなる。

実際に読み書きを行う時は @"""" + 任意のパス  + @"""" と記述してる。これで半角・全角問わずスペース入りのパス名を扱える。

 

 

最初はバイナリ変換でやろうとして上手くいかなかったです。

pythonスクリプトをDll化するなども考えてアホみたいに時間食ってた(;^ω^)

やっぱりC#だけで完結させた方が早いみたい。