[C#] ファイルパスが羅列されたファイルからパスを取得する

下例のようにファイルパスが羅列されたファイルがあったとして、その全パスを取得したい。

path test0 "file0.txt"
path test1 "file1.txt"
path test2 "file2/file2.dat"

今回のソースで、パスが取得可能な条件は以下の通りです。
・パスはダブルクオーテーションで囲まれている
・各行にパスは1つ
・ダブルクオーテーションは取得パスを囲む以外には使用されない

以下ソースです。

   // 各ファイルへのパスが記述されたファイルへのパス取得
   string filePath = @"test.txt";
   // file.txtリード用にStreamReaderをインスタンス化
   System.IO.StreamReader sr = (
       new System.IO.StreamReader(filePath, System.Text.Encoding.Default));
   // stringのリスト要素に各ファイルパスを格納したい
   List allFilePath = new List();
   // file.txtファイル1行ずつ走査
   while (sr.Peek() != 0) {
       // ""で囲まれた文字列を抽出("を含む)
       // 正規表現を使用
       System.Text.RegularExpressions.MatchCollection mc = 
           System.Text.RegularExpressions.Regex.Matches(sr.ReadLine(), "\".*\"");
       // "を取り除く
       string str = mc[0].Value.Trim('\"');
       // 結果出力
       Console.WriteLine(str);
   }

   sr.Close();
file0.txt
file1.txt
file2/file2.dat

シェアする

  • このエントリーをはてなブックマークに追加

フォローする