如何使用c#从.txt文件中读取数据?

时间:2016-04-22 18:20:14

标签: c# delimiter

我想从特定路径读取数据,但程序只读取第一行。 我的程序从用户获取数据并将其保存为.txt文件,然后我想显示分隔符之间的所有内容。

输入

1@aaa@bbbb@2@c@f@3@r@t

输出

Id:1
Name:aaa
Address:bbbb

Id:2
Name:c
Address:f

Id:3
Name:r
Address:t

这是我的代码:

FileStream fs = new FileStream(@"E:\New folder\a ", FileMode.Open);
StreamReader sd = new StreamReader(fs);
string s;
while (true)
{                            
    s = sd.ReadLine();
    field = s.Split(std.delimiter);
    std.ID = field[0];
    std.Name = field[1];
    std.Address = field[2];
    std.Display_data();
    sd.Close();
    fs.Close();
    break;
}


public void Display_data()
{
     Console.WriteLine(ID);
     Console.WriteLine(Name);
     Console.WriteLine(Address);    
}

2 个答案:

答案 0 :(得分:1)

您需要删除

break;

条件编辑并移动

sd.Close();
fs.Close();

时间周期。
所以你的while循环应该是这样的

while (!sd.EndOfStream)
{                            
    s = sd.ReadLine();
    field = s.Split(std.delimiter);
    std.ID = field[0];
    std.Name = field[1];
    std.Address = field[2];
    std.Display_data();
}
sd.Close();
fs.Close();

答案 1 :(得分:0)

读取行,使用' @'拆分然后阅读3个订单项并打印出该品牌。

using(StreamReader oReader = new StreamReader(@"E:\Newfolder\a\test.txt"))
{
    string [] sLineItems = oReader.ReadLine().Split('@');

    for(int i = 0;i < sLineItems.Length; i = i+3)
    {
          Console.WriteLine("Id:{0}",sLineItems[i]);
          Console.WriteLine("Name:{0}",sLineItems[i+1]);
          Console.WriteLine("Address:{0}",sLineItems[i+2]);
    }
}