うぃろぅ.log

140字で綴りきれない日々の徒然備忘録

【C#】 続・CSVのヘッダーだけ読み込んで出力する

うぃろぅです。
ふと過去のエントリー見てたら「いやお前何やそのコード」ってなったので書きます。

こんな記事を書いた

vviilloovv.hatenablog.com

あなた疲れてたのよ

こんな小難しいこと全くする必要なかった。

CSVだろうが結局のところテキストなのだから単純に1行目を読み込んでSplitすればおしまいなのである。

純化した

以下コード。

using System.Text;
using System.IO;

class Program
{
  static void Main(string[] args])
  {
    var sJis = Encoding.GetEncoding("Shift-JIS");
    var csvPath = @"C:\Sample\csv";
    var csvs = Directory.GetFiles(csvPath, "*.csv", SearchOption.AllDirectories);

    // ファイル数ループ
    foreach(var csv in csvs)
    {
      // 行数がわからないので1行読込
      string row;
      using(var sr = new StreamReader(csv, sJis)) row = sr.ReadLine() ?? "";

      var outPath = Path.Combine(csvPath, "header", Path.GetFileName(csv));

      using(var sw = new StreamWriter(outPath, false, sJis))
      {
        foreach(var head in row.Split(','))
        {
          sw.WriteLine(head);
        }
      }
    }
  }
}

ネスト深め。なんとかしたいけどそんなに難しいことしていないからこれで。

前回のコードと比べると10行ほどの削減。
あとMicrosoft.VisualBasic.FileIOをインポートしていないから参照の追加が不要。

将来の自分に向けて書いた過去の自分、GJ。褒めて伸ばす。

ではまた。