2011-10-07 66 views
1

我有这部分代码需要一个文件,并将其放入ArrayList。将输入的文件将是CSV(我使用的当前CSV在第一行有标题,所以我不需要该行),第二行必须放入ArrayList不能分割线

我使用ArrayList,因为该文件可以是动态的,所以我不确定第二行的长度是多少。我测试过(在第二行有7个以逗号分隔的文件)此代码,它打印出ArrayList的长度为(fileList.Count)= 1。

出现了什么问题?

ArrayList fileList2 = new ArrayList(); 
private void button3_Click(object sender, EventArgs e) 
{ 
    string filename = ""; 
    DialogResult result = openFileDialog2.ShowDialog(); 
    if (result == DialogResult.OK) 
    { 
     filename = openFileDialog2.FileName; 
     textBox3.Text = filename; 
     string line2; 
     System.IO.StreamReader file2 = new System.IO.StreamReader(textBox3.Text); //reads file from textbox 
     stringforData = file2.ReadLine();  // this reads the first line that I dont need 
     while ((line2 = file2.ReadLine()) != null)  //read the lines 
     { 
      // puts elements into array 
      fileList2.Add(line2.Split(';'));//split the line and put it in the arraylist 
     } 
     file2.Close(); 
     if (true) // this is for testind what is happening 
     { 
      this.textBox2.Clear(); 
      textBox3.Text = Convert.ToString(fileList2.Count); 
     } 
    } 
} 
+4

2011年为什么要使用ArrayList?它已被弃用多年,现在,如果Baszz是正确的,你的例子显示了为什么 – Dyppl

+0

要增加什么Dyppl说,看到[这个问题](http://stackoverflow.com/questions/5063156/why-isnt-arraylist-marked -obsolete)。 – R0MANARMY

+0

@Dyppl我应该使用什么和如何? –

回答

5

难道你不想使用fileList2.AddRange()而不是fileList2.Add()? 在我看来,你现在正在向fileList添加一个项目。该项目是一个数组,其中包含您实际想要添加到列表中的所有项目。如果你首先得到这个数组并且使用addRange方法,那应该没问题。

+0

+1对我来说看起来也是错误..无论如何,我认为这个问题是不正确的,因为filelist2从来没有在这个内部定义,并且OP在告诉我们文件列表计数是1 ... – gbianchi

+1

也是:他谈论一个逗号分隔线,而他正在分裂; – mtijn

+0

@mtijn:这很可能是好的,CSV文件通常在某些语言环境中(如俄语)带有分号分隔符,但它们仍称为CSV – Dyppl

0

首先,您应该使用AddRange(),而不是Add()。其次,如果这是一个CSV文件,那么为什么要将分号传递给split()方法?

+0

我正在使用csv's;'not',' –

+0

请指定此项,CSV意味着逗号。 – MGZero