4

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

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

我在 uni 学习 java,我的新工作使用 c#。

基本上,我必须从电话系统读取 pbx 文件中包含的记录列表。然而,这些记录有一行良好的通话记录,然后是一行带有一些可疑字符的行,然后是另一行良好的记录。

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

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

我是 c# 的新手,并且已经在这方面探索了谷歌几个小时。只需要一点指导,我就走了……

4

1 回答 1

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);
        }
    }
}

由于您标记了此 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);
于 2012-05-12T12:14:50.670 回答