0

現在のレコードのレコードを読み取ってから書き出す必要があります。

これは私がこれまでに持っているコードです:

private void ShipRecords()
{
  using (TextReader tr = File.OpenText(appSettings.CreditCardTranFile))
  {
    var strLine = string.Empty;
    string[] arrColumns = null;
    while ((strLine = tr.ReadLine()) != null)
    {
      arrColumns = strLine.Split('\t');
      if (arrColumns[0] == "A")
      {
        if (PublishRecord(arrColumns))
        {
          arrColumns[0] = "P";
          // I need to save here
        }

      }
    }
    tr.Close();
  }
}

この時点で、変更を加えてレコードを書き戻すにはどうすればよいですか?

4

2 に答える 2

0

ここでは、あなたが何をしようとしているのか正確にはわからないので、これをテストしませんでしたが、このようなものです。これが私が行う方法です。

private void ShipRecords()
    {
        StreamWriter writer;
        StreamReader reader;

        try
        {
            writer = new StreamWriter(outputFile);
            reader = new StreamReader(inputFile);

            string line;
            string[] columns;

            while ((line = reader.ReadLine()) != null)
            {
                columns = line.Split('\t'); // you may want to check that you get the correct number of columns etc.

                if (columns[0] == "A" && PublishRecord(columns))
                    columns[0] = "P";

                writer.WriteLine(String.Join("\t", columns));
            }
        }
        catch { }
        finally
        {
            try { writer.Close(); }
            catch { }
            try { reader.Close(); }
            catch { }
        }
    }

そのハンガリアン記法の使用は避けることをお勧めします。

于 2013-02-18T06:11:10.887 に答える
0

それがオプションかどうかはわかりませんが、メソッドのシグネチャを変更して返すこともできます

IEnumerable<string>

と使用

yield return "stringValue";

あなたのループで。呼び出し元は、通常の foreach ループで書き込みを処理できます。

于 2013-02-18T06:27:30.823 に答える