【C#】 続・CSVのヘッダーだけ読み込んで出力する
うぃろぅです。
ふと過去のエントリー見てたら「いやお前何やそのコード」ってなったので書きます。
こんな記事を書いた
あなた疲れてたのよ
こんな小難しいこと全くする必要なかった。
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。褒めて伸ばす。
ではまた。