none
DirectoryInfoクラスのコンストラクターに最後が全角スペースで終わるようなパスを渡すと例外が発生する RRS feed

  • 質問

  • DirectoryInfoクラスのコンストラクターに最後が全角スペースで終わるようなパスを渡すと、
    実際はディレクトリがあるにもかかわらず、DirectoryNotFoundExceptionが発生します。
    このときのエラーの内容をよくみると、どうやらコンストラクターに渡したパスがトリムされていて
    最後の全角スペースがなくなった状態で探しにいっているようです。

    これを回避する良い手段はないのでしょうか?

    以下のサンプルで簡単に確認できます。
    まず準備として、Cドライブのルートの『てすと 』フォルダを作成します。
    最後のスペースは全角スペースです。
    このフォルダにいくつか適当なファイルをコピーしておきます。これで準備は終わりです。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace GetDirectoriesBugTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                DirectoryInfo di = new DirectoryInfo(@"C:\てすと ");
                DirectoryInfo[] dirList = di.GetDirectories();

                foreach (DirectoryInfo dir in dirList)
                {
                    Console.WriteLine("'{0}'", dir.Name);
                }

            }
        }
    }

    2006年8月24日 22:19

すべての返信