我要做的是打开目录中的每个文本文件,逐行读取,如果它与特定内容匹配,请执行正则表达式并将其输出到结果中。出于某种原因,我的文本文件最终成为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();
}
答案 0 :(得分:6)
File.ReadAllText
实际上将整个文件读入字符串。请尝试使用File.OpenRead
答案 1 :(得分:2)
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();