如何将文件名/路径传递给文本解析器

时间:2015-09-23 01:28:12

标签: c# visual-studio-2015 streamreader

我试图让一个简单的文本解析器类在VS2015中工作。我收到了类代码并构建了一个基本的控制台应用程序,添加了类Cawk并尝试编译/运行它。

我得到的主要错误是

  

参数1:无法转换为' string'到' System.IO.StreamReader'

很明显,我无法弄清楚如何将文件名传递到MainCawk。我如何给它一个文件名的参数?

任何帮助或指示都将不胜感激。

我的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)
        {

4 个答案:

答案 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;与其余的使用一样,你可以在以后写出来。