問題は次のとおりです。拡張子が *.sld のファイルがあります。このファイルには、約 94 列 24500 行の数字が含まれており、通常のテキスト ファイルとして読み取ることができます。プログラムからこれらの数値にアクセスする最良の方法は何ですか? たとえば、列 15 のすべての数値を double として格納したいとします。どのようなオプションがありますか? dataTable を試してみましたが、File.ReadAllLines でファイル全体をロードすると、プログラムを実行するのに約 150MB の RAM メモリが必要になり、このような複数のファイルがプログラムで使用されることを考慮する必要があります。*.sld ファイルの一部は次のようになります。
0.000 96.47 2.51 1.43 2.56 2.47 5.83 -> more columns
1.030 96.47 2.52 1.39 3.14 2.43 5.60 |
2.044 96.47 2.43 1.63 2.96 2.34 5.86 \/
3.058 96.47 2.47 0.76 2.59 2.44 5.62 more rows
4.072 96.47 2.56 1.39 2.99 2.38 5.89
前に述べたより多くの列と行があることを除いて。私の解決策は次のようなものでした:
//Read all lines of opened file to string array
string[] lines = System.IO.File.ReadAllLines(@OFD.FileName,Encoding.Default);
//Remove more than one whitespace with only one whitespace in cycle (cycle not shown)
string partialLine = Regex.Replace(lines[i], @"\s+", " ");
//Split string to string array and add it to dataTable
string[] partialLineElement = partialLine.Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries);
fileData.Rows.Add(partialLineElement);
しかし、データの列全体にアクセスする際に問題があり、2 倍の数値ではなく文字列配列です。このファイルの 1 つの列を double[] として ZedGraph に追加する必要があります。また、この dataTable を dataGridView に次のように割り当てようとしました。
dataGridView1.DataSource = fileData;
dataGridView1.Refresh();
しかし、列に double[] としてアクセスする方法 ??? 助言がありますか ?