前提・実現したいこと
約1500行で10列に、スペース区切りで値が並んでいるcsvファイルがあります。
以下のコードで二次元配列に格納したつもりなのですが、新たなファイルに、
書き出したときに、「インデックスが配列の境界外です」というエラーが出ています。
配列の1次元の長さを取得して、for文で回していますが、なぜかうまくいきません。
初心者ですが、どなたかご教授よろしくお願い申し上げます。
発生している問題・エラーメッセージ
「インデックスが配列の境界外です」
該当のソースコード
C#
1using System; 2using System.Collections.Generic; 3using System.IO; 4using System.Linq; 5using System.Text; 6 7public class ReadCSV 8{ 9 public static string[][] ReadingCsv(string file) 10 { 11 List<string[]> ReadCsvList = new List<string[]>(); 12 StreamReader ReadCsvObject = new StreamReader(file, Encoding.UTF8); 13 ReadCsvObject.ReadLine(); //ヘッダ読み飛ばし 14 while (!ReadCsvObject.EndOfStream) 15 { 16 string[] Data = ReadCsvObject.ReadLine().Trim(' ').Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToArray(); 17 ReadCsvList.Add(Data); 18 } 19 return ReadCsvList.ToArray(); 20 } 21} 22public class WriteCSV 23{ 24 private static string[] Depth; 25 26 public static void Main() 27 { 28 29 string[] files = Directory.GetFiles(Path, "*.csv"); 30 31 Depth = new string[ReadCSV.ReadingCsv(files[0]).GetLength(0)]; 32 33 for (int i = 0; i < ReadCSV.ReadingCsv(files[0]).GetLength(0) ; i++) 34 { 35 Depth[i] = ReadCSV.ReadingCsv(files[0])[i][0]; 36 } 37 38 Console.WriteLine("{0}",Depth[0]); 39 40 try 41 { 42 // appendをtrueにすると,既存のファイルに追記 43 // falseにすると,ファイルを新規作成する 44 bool append = false; 45 // 出力用のファイルを開く 46 StreamWriter WriteCsvObject = new StreamWriter(Path, append); 47 for (int i = 0; i < ReadCSV.ReadingCsv(files[0]).GetLength(0); i++) 48 { 49 WriteCsvObject.WriteLine("{0}", Depth[i]); 50 } 51 } 52 catch (System.Exception e) 53 { 54 // ファイルを開くのに失敗したときエラーメッセージを表示 55 Console.WriteLine(e.Message); 56 } 57 } 58 59 60}
試したこと
補足情報(FW/ツールのバージョンなど)
Visual Studio 2017

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/22 04:17
2018/03/22 04:19
退会済みユーザー
2018/03/22 04:32
2018/03/22 04:38
退会済みユーザー
2018/03/22 04:41
2018/03/22 04:49
退会済みユーザー
2018/03/22 04:56