【问题标题】:How can i read data from .txt file using c#? [duplicate]如何使用 c# 从 .txt 文件中读取数据? [复制]
【发布时间】:2016-04-22 18:20:13
【问题描述】:

我想从特定路径读取数据,但程序只读取第一行。 我的程序从用户那里获取数据并将其保存为 int .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);    
}

【问题讨论】:

  • 请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。请参阅How to Ask 页面以获得澄清此问题的帮助。
  • @p.s.w.g 我编辑了,请再看一遍。
  • break 在第一次执行后立即存在 while 循环。删除它并用适当的测试替换循环条件。

标签: c# delimiter


【解决方案1】:

你需要删除

break;

编辑while条件并移动

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

退出while循环。
所以你的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();

【讨论】:

  • sd.RreadLine() 将在sd.Close() 之后抛出ObjectDisposedException。您需要将这两个 .Close() 调用移到 while 循环之外。
  • 我现在就编辑它
【解决方案2】:

读取行,使用“@”拆分,然后读取 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]);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2018-11-12
    • 2014-04-02
    • 2021-04-15
    相关资源
    最近更新 更多