我有一个问题,需要我从文本文件中计算合成学生标记。它给出了第一行中标记的权重,下一行中要评估的学生数量,然后下一行是学生的标记。这种模式通过文件重复,没有重大分离。
为清楚起见,文本文件和问题是here:
我尝试使用以下代码使用streamreader创建一个新对象:
using (StreamReader sr = new StreamReader("DATA10.txt")) {
blahblahblah;
}
DATA10.txt与程序位于同一文件夹中。
但是我得到“无法从'字符串'转换为'System.IO.Stream'”,即使在MSDN上的示例中,其他地方也使用了那些确切的代码。我做错了什么?
最终我要做的是从第二行获取值并使用streamreader读取该行数。然后在下一组数据上重复整个过程。
我真的不认为这是一个重复的问题,这里的答案以一种更容易理解的方式表达。
答案 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();
}
}
}
答案 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());
}
}