タイトル通り、"C#で、"CSVファイルよりデータを文字列配列に取り込むソース"を作成したいです。
色々と参考にしながら、よく見たことのあるソースを作成しました。
しかし素朴な疑問なのですが、下記のソースの場合、例えば"Item.csv"、"Chart.csv"という2つのcsvファイルがあった場合、2つともちゃんと読み込んでくれるのでしょうか?
ファイル名を指定していないため、この2つのcsvファイルをどのようにして特定し、読み込んでくれるか不安になりました。
自分で確かめれば良いことなのですが、とある事情で3日ほどvisual studioが使用できないのですが、もやもやするためご教授願います。
C#
1 private void BtnSplit_Click(object sender, EventArgs e) 2 { 3 List<string[]> sStrList = new List<string[]>(); // CSV分割後格納リスト 4 5 string sCsvPath = null; 6 if (CsvSplit(sCsvPath, ',', ref sStrList) == false) 7 { 8 9 return; 10 } 11 12 sStrList.ForEach(sList => 13 { 14 Debug.WriteLine(sList); 15 }); 16 } 17 18 19 20 21 22 23 public bool CsvSplit(string sCsvFilePath,char chDlimiter,ref List<string[]> sStrList) 24 { 25 bool bRet = true; 26 27 try 28 { 29 // CSVファイル読込 30 using (StreamReader objReader = new StreamReader(sCsvFilePath,Encoding.GetEncoding("shift_jis"))) 31 { 32 // ストリームの末尾まで繰り返す 33 while (objReader.EndOfStream != true) 34 { 35 // ファイルから一行読み込む 36 string sLine = objReader.ReadLine(); 37 38 // 読み込んだ一行を区切り文字で分けて配列に格納する 39 string[] sValues = sLine.Split(chDlimiter); 40 41 // 返却用リストに格納 42 sStrList.Add(sValues); 43 44 }//End while 45 } 46 } 47 catch (Exception e) 48 { 49 // ファイルを開くのに失敗したとき 50 Debug.WriteLine(e.Message); 51 52 bRet = false; 53 } 54 55 return bRet; 56 }
前のスレッド https://teratail.com/questions/158354 の続きですよね。前のスレッドでいろいろレスを貰っているのですから、まず前のスレッドでそれらにフィードバックを返せませんか? そして、方針変更して新たに別のスレッドを立てて質問するということを書いていただければと思います。
SurferOnWww様と指摘が似ているのですが、前回は、配列の配列(ジャグ配列)のはずでしたよね?仕様変更なんですか?手前味噌みたいになって嫌なんですが、前回の質問で私の書いたのは今回のコード程度のゆるいcsvなら対応していますし、List<string[]>にも容易に対応できるんですが?というかIEnumerable<IEnumerable<string>>でもいいってことですか?
回答3件
あなたの回答
tips
プレビュー