使用StreamReader读取其他行定义的行

时间:2017-04-08 12:50:59

标签: c# streamreader

我有一个问题,需要我从文本文件中计算合成学生标记。它给出了第一行中标记的权重,下一行中要评估的学生数量,然后下一行是学生的标记。这种模式通过文件重复,没有重大分离。

为清楚起见,文本文件和问题是here:

我尝试使用以下代码使用streamreader创建一个新对象:

using (StreamReader sr = new StreamReader("DATA10.txt")) {
    blahblahblah;
}

DATA10.txt与程序位于同一文件夹中。

但是我得到“无法从'字符串'转换为'System.IO.Stream'”,即使在MSDN上的示例中,其他地方也使用了那些确切的代码。我做错了什么?

最终我要做的是从第二行获取值并使用streamreader读取该行数。然后在下一组数据上重复整个过程。

我真的不认为这是一个重复的问题,这里的答案以一种更容易理解的方式表达。

2 个答案:

答案 0 :(得分:0)

您还必须在解决方案资源管理器中将“DATA10.txt”的“复制到输出目录”属性设置为“始终复制”

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace _07___ReadTextFileWhile
    {
        class Program
        {
            static void Main(string[] args)
            {
                StreamReader myReader = new StreamReader("DATA10.txt");

                string line = "";

                while (line != null)
                {
                    line = myReader.ReadLine();
                    if (line != null)
                        Console.WriteLine(line);
                }

                myReader.Close();
                Console.ReadKey();

            }
        }
    }

enter image description here

答案 1 :(得分:0)

StreamReader 假设接收Stream,因为其参数也可以将Stream作为参数接收,您还必须指定FileMode

相反,尝试这样的事情:

public static void Main() 
{
    string path = @"c:\PathToFile\DATA10.txt";

    try 
    {        
        using (FileStream fs = new FileStream(path, FileMode.Open)) 
        {
            using (StreamReader sr = new StreamReader(fs)) 
            {
                 //blahblah    
            }
        }
    } 
    catch (Exception e) 
    {
        Console.WriteLine("The process failed: {0}", e.ToString());
    }
}

MSDN Reference