4

StreamReader を使用して pbx ファイルから読み取り、内容を編集し、c# の TextReader を使用して内容を新しいファイルに表示しようとしています。

これは、ac# での私の最初の開発タスクです。

私は大学で Java を学び、新しい仕事で c# を使用しています。

基本的に、電話システムから pbx ファイルに含まれるレコードのリストを読み取る必要があります。ただし、これらのレコードには、適切な通話レコードの行があり、その後に怪しい文字がいくつか含まれる行が続き、その後に適切なレコードの別の行が続きます。

私の仕事は、このファイルを 1 行ずつ読み、危険な文字を含む行を無視するコードを書き、正しいレコードを c:\ ドライブの新しいファイルに出力することです。このファイルは output.txt と呼ばれます。

while ループを記述して危険な文字を取り除くことはできますが、c ドライブの pbx ファイルから読み取り、編集した内容を同じ c ドライブの output.txt という新しいファイルに出力する C# コードがわかりません。

私はc#が初めてで、これについて何時間もGoogleを調べてきました。少し案内が必要で、私は不在です...

4

1 に答える 1

5

ファイルのエンコーディングについて言及していないので、ここではデフォルトの UTF-8 を使用します。

1 つのオプションは、次のように、読み取り、チェック、および条件付き書き込みを行うループの「通常の」方法です。

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 に答える