StreamReader和TextReader

Chr*_*key 4 c# visual-studio-2008

我正在尝试使用StreamReader从pbx文件中读取内容,编辑内容,然后在c#中使用TextReader将内容显示到新文件中。

这是我在ac#中的第一个开发任务。

我在uni学习Java,而我的新工作是使用c#。

基本上,我必须从电话系统通读pbx文件中包含的记录列表。但是,这些记录具有一行良好的呼叫记录,其后是一行带有一些狡猾字符的行,然后是另一行良好记录。

我的任务是逐行读取此文件,然后编写一段代码来忽略带有不可靠字符的行,并将好的记录输出到我的c:\驱动器上的新文件中,该文件名为output.txt。

我可以编写while循环来取出狡猾的字符,但不确定从C驱动器上的pbx文件读取c#代码,然后将编辑后的内容输出到也称为c。驱动器的新文件output.txt中。

我是C#的新手,并且已经在Google上进行了数小时的探索。只需要一点指导,我就走了...

Jam*_*ing 5

您没有提到文件编码,所以我在这里坚持使用UTF-8默认值。

一种选择是循环的“常规”方法,该方法可以读取,检查和有条件地进行写入,如下所示:

var inputFilePath  = @"C:\temp\input.txt";
var outputFilePath = @"C:\temp\output.txt";

using (var reader = File.OpenText(inputFilePath))
using (var writer = File.CreateText(outputFilePath))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        var isValidLine = CheckLine(line);
        if (isValidLine)
        {
            writer.WriteLine(line);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

自从您标记了VS2008以来,我想这意味着您仅限于.NET 3.5,但在4.0或更高版本上,您可以读写枚举,然后加以利用(在.NET 3.5中,您必须阅读所有将行插入内存,过滤,然后写所有行)。

var inputFilePath  = @"C:\temp\input.txt";
var outputFilePath = @"C:\temp\output.txt";

var inputLines = File.ReadLines(inputFilePath);

var linesToWrite = inputLines
    .Where(line => IsLineValid(line));

File.WriteAllLines(outputFilePath, linesToWrite);
Run Code Online (Sandbox Code Playgroud)

  • 坚持默认设置很可能是OP出现问题的原因。PBX日志文件用utf8编写的几率非常低。至少推荐并显示Encoding.Default的用法 (2认同)