2012-10-03 25 views
0

我在C#新的,并试图建立一种计算器应用程序将从一个CSV文件,然后读取值继续进行所需的操作。我怎样才能读取(保存)不同线路(的数值)CSV文件到不同的数组在C#

计算器的算法工作正常,但我需要从一个CSV文件填充阵列。我已经使用的StreamReader如下,但它把所有的值成一个单一的阵列:

FileStream aFile = new FileStream("d:\test.txt", FileMode.Open, FileAccess.Read); 
       StreamReader sr = new StreamReader(aFile); 
       strLine = sr.ReadLine(); 
       while (strLine != null) 
       { 
        strArray = strLine.Split(charArray); 
        for (int x = 1; x <= strArray.GetUpperBound(0); x++) 
        { 
         Console.WriteLine(strArray[x].Trim()); 

我需要阅读单独线成单独的阵列和这些线可以是动态的(即,CSV文件可以具有线的n个这将需要n个数组)。计算器算法如下,工作正常。我只需要如何使用上面的代码来读取csv到数组中,并在下面的代码中使用这些数组(下面的代码,虽然摘录,工作正常)。请任何帮助。

for (int p = 0; p < n; p++) 
     { 
     for (int j = 0; j < t; j++) 
      { 
       sum[j] = w[p, j] * a[p, j]; 
       k[p] = k[p] + sum[j]; 
      } 
     } 
     double loa=0; 
     for (int i = 0; i < n; i++) 
     { 
      loa1[i] = k[i] * v[i]; 
      loa += loa1[i]; 
+1

您需要修复代码的格式。我正在编辑帖子,但我无法弄清楚你在做什么。你甚至在你的'for'循环中声明它之前使用你的内部'i'索引器。 –

回答

0

TextFieldParser类非常适合读取CSV文件。

TextFieldParser parser = new TextFieldParser("filename.txt"); 
parser.Delimiters = new[] { "," }; 
while (!parser.EndOfData) 
{ 
    string[] fields = parser.ReadFields(); 
    //process this line of fields, or store it for later processing 
} 

然后可以使用int.TryParsedouble.TryParse打开相应的字符串转化为数值。

0

非常感谢大家的意见和帮助,非常感谢。我能分别读取行使用:

using (TextFieldParser fieldParser = new TextFieldParser(name)) "d:\\test1.txt")) 
     { 
      parts = fieldParser.ReadFields(); 

,然后使用保持在一个双阵列从单独的行中的值:

double[] array = Array.ConvertAll(parts, double.Parse); 

,然后我使用的计数器和EndOfData属性来管理行开关定义单独的阵列:

counter++; 
if (fieldParser.EndOfData) 
       { 

再次感谢。可能计算器现在正在运行,并且可在http://thaddeus-eze.com

相关问题