C# 读取文本文件中的所有行并将它们添加到C中#

C# 读取文本文件中的所有行并将它们添加到C中#,c#,.net,for-loop,while-loop,C#,.net,For Loop,While Loop,我已经研究这个问题有一段时间了,我有点卡住了。我有一个文本文件,我需要循环浏览并读取所有行,然后将所有子字符串添加到一起,形成一个最终数字。问题是,我所做的是正确地读取并仅为文件中的第一行生成数字。我不确定是使用“while”还是“for each”。以下是我的代码: string filePath = ConfigurationSettings.AppSettings["benefitsFile"]; StreamReader reader = null; FileSt

我已经研究这个问题有一段时间了,我有点卡住了。我有一个文本文件,我需要循环浏览并读取所有行,然后将所有子字符串添加到一起,形成一个最终数字。问题是,我所做的是正确地读取并仅为文件中的第一行生成数字。我不确定是使用“while”还是“for each”。以下是我的代码:

    string filePath = ConfigurationSettings.AppSettings["benefitsFile"];
    StreamReader reader = null;
    FileStream fs = null;
    try
    {
        //Read file and get estimated return.
        fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
        reader = new StreamReader(fs);
        string line = reader.ReadLine();
        int soldToDate = Convert.ToInt32(Convert.ToDouble(line.Substring(10, 15)));
        int currentReturn = Convert.ToInt32(soldToDate * .225);

        //Update the return amount
        updateCurrentReturn(currentReturn);

如果您有任何建议,我们将不胜感激。

您可以使用while循环来执行此操作,阅读每一行并检查是否正确


您可以使用while循环来执行此操作,读取每一行并检查它是否正确


只使用
文件更容易。ReadLines

foreach(var line in File.ReadLines(filepath))
{
    //do stuff with line
}

只使用
文件更容易。ReadLines

foreach(var line in File.ReadLines(filepath))
{
    //do stuff with line
}

这是更普遍的,因为它适用于大多数文本

string text = File.ReadAllText("file directory");
foreach(string line in text.Split('\n'))
{

}

这是更普遍的,因为它适用于大多数文本

string text = File.ReadAllText("file directory");
foreach(string line in text.Split('\n'))
{

}

While(reader.ReadLine()){}string[]words=System.IO.File.ReadAllLines(FilePath);While(reader.ReadLine()){}string[]words=System.IO.File.ReadAllLines(FilePath);我相信OP是在寻找所有行的总和,在这种情况下,
int currentReturn+=Convert.ToInt32…
就可以了。凯尔,我在寻找所有行的总和。我在上面David N的回答中运行了代码,虽然代码似乎在运行,但我的日志文件返回第26行的输入字符串格式不正确,这是“int-soldToDate”行……我仍然在int-soldToDate行中收到“input-in-error format”错误。我的每一行的格式是-000010004000000000000.00000000000000.00000000000000.00 000010000000037462.2500000021645.0000000005228.00 000010015000000002240.00000000017072.00000000002259.00,其中我想忽略前10个字符,并读取下15个字符(我的子字符串)。出于某种原因,它一直出错。我尝试将子字符串更改为10,12以删除小数点和尾随的零,但得到了相同的错误。我相信OP正在查找所有行的总和,在这种情况下,
int currentReturn+=Convert.ToInt32…
就可以了。Kyle,我正在查找所有行的总和。我在上面David N的回答中运行了代码,虽然代码似乎在运行,但我的日志文件返回第26行的输入字符串格式不正确,这是“int-soldToDate”行……我仍然在int-soldToDate行中收到“input-in-error format”错误。我的每一行的格式是-000010004000000000000.00000000000000.00000000000000.00 000010000000037462.2500000021645.0000000005228.00 000010015000000002240.00000000017072.00000000002259.00,其中我想忽略前10个字符,并读取下15个字符(我的子字符串)。出于某种原因,它一直出错。我尝试将子字符串更改为10,12以删除小数点和尾随的零,但得到了相同的错误。如果可以使用
ReadLines
流式传输它,为什么要浪费整个文件中所有的内存读取。除此之外,您还可以避免拆分文本,从而提高性能,并确保即使在使用除
\n
以外的新行的操作系统上操作也能正常工作。谢谢,这真的很有帮助。如果可以使用
ReadLines
流式传输,为什么要浪费整个文件中的所有内存读取。除此之外,您还可以避免拆分文本,从而提高性能,并确保即使在使用除
\n
以外的新行的操作系统上操作也能正常工作。谢谢,这真的很有帮助。