读取和修改制表符分隔的文件

本文关键字:文件 分隔 制表符 修改 读取 | 更新日期: 2023-09-27 17:59:43

我需要读取并写出我所在的当前记录的记录。

这是我迄今为止的代码:

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

在这一点上,我如何用我的更改将记录写回?

读取和修改制表符分隔的文件

在这里,我没有测试它,因为我不确定你到底想做什么,但类似这样的事情。。我就是这么做的。

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 { }
        }
    }

我建议您避免使用匈牙利案例风格。

我不确定这是否是一个选项,但您也可以更改方法的签名以返回

IEnumerable<string>

并使用

yield return "stringValue";

在你的循环中。然后,调用者可以在常规的foreach循环中处理写入。