繁体   English   中英

C#无法将类型'string'隐式转换为'System.IO.StreamReader

[英]C# Cannot implicitly convert type 'string' to 'System.IO.StreamReader

我想做的是打开目录中的每个文本文件,逐行读取,如果它与特定内容匹配,则进行正则表达式并将其输出到结果中。 由于某种原因,我的文本文件最终变成了Unicode...。 因此,我能够解决此问题,但无法解决我遇到的流阅读器问题。 如果有人可以提出解决此问题的方法,那将是很好的,并且如果该方法是转换那些文本文件,那就这样吧。

这是代码:

        public void doSomeWork()
    {
        DirectoryInfo dinfo = new DirectoryInfo(@"C:\Documents and Settings\123");
        FileInfo[] Files = dinfo.GetFiles("*.txt");
        foreach (FileInfo filex in Files)
        {
            string line;
            StreamReader sr = File.ReadAllText(filex.FullName, Encoding.Unicode);
            StreamWriter sra = File.AppendText(@"C:\sharename.txt");
            int counter = 0;
            while((line = sr.ReadLine()) != null)
            {
                string matchingcontants = "Share";
                if (line.Contains(matchingcontants))
                {
                    string s = sr.ReadLine();
                    string sharename = Regex.Match(line, @"\+(\S*)(.)(.*)(.)").Groups[3].Value;
                    sra.WriteLine(sharename);
                }
                counter++;
            }
            sr.Close();
            sra.Close();  
        }

File.ReadAllText实际上将整个文件读取为一个字符串。 请尝试File.OpenRead

File.ReadAllText返回一个字符串,其中包含文件中的所有文本。

尝试更改:

StreamReader sr = File.ReadAllText(filex.FullName, Encoding.Unicode);

string[] lines = File.ReadAllLines(filex.FullName, Encoding.Unicode);

并改变

while((line = sr.ReadLine()) != null)

foreach(string line in lines)

并删除以下内容:

sr.Close();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM