【问题标题】:.NET 3.5 Equivalent for ReadAllLines and WriteAllLines in C#.NET 3.5 等效于 C# 中的 ReadAllLines 和 WriteAllLines
【发布时间】:2015-10-30 06:08:42
【问题描述】:

我正在尝试创建一个可以打开 .csv 文件的应用程序,将一些用户输入的文本添加到特定行的末尾,然后保存并关闭该文件。我已经看到许多使用 ReadAllLines 和 WriteAllLines 来实现这一点的解决方案,但由于某些原因,我一直使用 VS2008 和 .NET 3.5,它们显然没有这些。我想知道是否有人知道在 3.5 中实现这些的等效方法。如果我可以创建一个数组来保存文件中的每一行文本,我也许可以使用它们在数组中的索引来访问特定的行,将我想要的文本添加到它们,然后保存文件。可悲的是,我不确定如何做到这一点,或者是否有可能。我对 C# 还很陌生,所以这可能完全是胡言乱语,但我希望不是!如果有人对我如何解决这个问题有任何建议,将不胜感激。谢谢!

【问题讨论】:

  • StreamReaderStreamWriter 是你的朋友,就像在美好的时光中一样。
  • 在这里查看如何制作自己的 referencesource.microsoft.com/#mscorlib/system/io/…
  • @DaveShaw ...那时我意识到实现并不懒惰... o.o - 我不确定我从哪里得到它们的假设
  • File.Read/WriteAllLines() 自 .NET 2.0 起可用
  • @HansPassant - 采用 IEnumerable(而不仅仅是 string[])的 WriteAllLines 重载是新的。这可能是指的“懒惰”(尽管请注意 ReadAllLines 仍然返回 string[])。

标签: c# visual-studio-2008 .net-3.5


【解决方案1】:

这样的事情应该可以工作(根据您的特定需求进行更改)。是的,也许没有一些解决方案那么优雅,但它应该很快:

public void AddUserBS(string filePath, string separator, string userBS)
{
  var reader = new StreamReader(filePath);
  var writer = new StreamReader(filePath + "tmp");

  string line;

  while(null != (line = reader.ReadLine())
  {
     writer.Write(line + separator + userBS);
  }

  reader.Dispose();
  writer.Dispose();

  File.Delete(filePath);
  File.Rename(filePath + "tmp", filePath)
}

【讨论】:

    猜你喜欢
    • 2017-06-24
    • 1970-01-01
    • 2013-01-01
    • 2011-01-29
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 2010-10-08
    相关资源
    最近更新 更多