我试图让一个简单的文本解析器类在VS2015中工作。我收到了类代码并构建了一个基本的控制台应用程序,添加了类Cawk
并尝试编译/运行它。
我得到的主要错误是
参数1:无法转换为' string'到' System.IO.StreamReader'
很明显,我无法弄清楚如何将文件名传递到Main
到Cawk
。我如何给它一个文件名的参数?
任何帮助或指示都将不胜感激。
我的Program.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
class Program
{
static void Main()
{
string input = @"c:\temp\test.txt";
Cawk.Execute(input);
}
}
}
My Cawk.cs的片段:
using System;
using System.Collections.Generic;
using System.IO;
namespace ConsoleApplication3
{
public static class Cawk
{
public static IEnumerable<Dictionary<string, object>> Execute(StreamReader input)
{
Dictionary<string, object> row = new Dictionary<string, object>();
string line;
//string[] lines = File.ReadAllLines(path);
//read all rows
while ((line = input.ReadLine()) != null)
{
答案 0 :(得分:2)
Execute
接受StreamReader而不是字符串。
Cawk.Execute(new StreamReader(@"c:\temp\test.txt"))
但是,完成后应关闭流。
using (var sr = new StreamReader(@"c:\temp\test.txt"))
{
Cawk.Execute(sr);
}
答案 1 :(得分:0)
类似的东西:
var sr = new System.IO.StreamReader(@"c:\temp\test.txt");
Cawk.Execute(sr);
答案 2 :(得分:0)
只需使用File
命名空间中的System.IO
类。
Cawk.Execute(File.OpenText(@"c:\temp\test.txt"));
答案 3 :(得分:0)
像这样:
string input = @"c:\temp\test.txt";
Cawk.Execute(new System.IO.StreamReader(input));
你可以使用System.IO;与其余的使用一样,你可以在以后写出来。