如何将制表符分隔的文件读入List数组?

时间:2012-09-04 17:27:27

标签: c# winforms

我第一次启动Visual C#(2010 Express),我为WindowsFormsApplication创建了一个新项目。还没有编写代码,但我创建了一个按钮并将其放在Form1上。然后,我双击按钮,然后转到代码的一部分,在那里你可以写下按下按钮时发生的事情。

我想要做的第一件事是从LARGE制表符分隔的文本文件(30MB)中读取数据。文本文件包含7个结构化的数据列,如名称,年龄,喜欢的颜色,动物等。文本格式中没有任何棘手或奇特的东西。我正在使用以下代码:

File.ReadLines(sourceFilePath)
.Select(line => line.Split('\t'))
.ToArray();

但我的基本问题是如何建立和定义File和sourceFilePath?使用上面的代码,我得到“名称'文件'在当前上下文中不存在。

3 个答案:

答案 0 :(得分:5)

您需要将以下行添加到C#文件的顶部:

using System.IO;

这将允许使用System.IO名称空间中的File类。

至于定义sourceFilePath,这只是一个变量,您可以声明并设置为您需要的任何文件路径,例如。

string sourceFilePath = @"c:\data\file.csv";

注意在字符串文字之前使用@;这可以防止反斜杠被视为转义序列的开始。你可以改为逃避bakslashes,例如

string sourceFilePath = "c:\\data\\file.csv";

答案 1 :(得分:0)

File类驻留在System.IO命名空间中。您可以在应用程序中使用它:

using System.IO;

至于定义sourceFilePath的内容,您将需要将值硬编码到固定位置(这并不总是可取的),或者为用户设计一种机制来指定该路径,可能通过以下方式之一可用的各种CommonDialog。对CommonDialogs的一些研究应该有助于您进一步推动项目的开发。

答案 2 :(得分:0)

如果要按Tab键拆分,则可以尝试使用ReadAllText方法,然后使用Split方法,在其中定义分隔符(通过制表符):

 string[] delimitedByTab = File.ReadAllText(@"file").Split('\t').ToArray();

并使用System.IO;文件类的名称空间