C#:将文本文件内容与字符串变量进行比较

标签 c# .net string file-io compare

我有一个将文本转储到文本文件的应用程序。我认为文本不包含正确的回车符可能存在问题,因此我正在编写一个测试,将此文件的内容与我在代码中声明的字符串变量进行比较。

例如:

1) 代码创建一个包含文本的文本文件:

This is line 1
This is line 2
This is line 3

2) 我有以下要比较的字符串:

string testString = "This is line 1\nThis is line 2\nThis is line3"

我知道我可以打开文件流阅读器并逐行读取文本文件并将其存储在可变字符串变量中,同时在每行后附加“\n”,但想知道这是否是在重新发明轮子(换句话说,.NET 有一个类似这样的内置类)。提前致谢。

最佳答案

您可以使用 StreamReader 的 ReadToEnd() 方法读取单个字符串中的内容,例如

    using System.IO;

    using(StreamReader streamReader = new StreamReader(filePath))
    {
       string text = streamReader.ReadToEnd();
    }

注意:您必须确保释放资源(上面的代码使用“using”来做到这一点)并且 ReadToEnd() 方法假定流知道它何时结束。对于服务器仅在您请求时才发送数据并且不关闭连接的交互式协议(protocol),ReadToEnd 可能会无限期阻塞,因为它没有到达终点,应该避免,您还应该注意字符串中的当前位置应该在开头。

你也可以像这样使用ReadAllText

    // Open the file to read from.
    string readText = File.ReadAllText(path);

这很简单,它打开一个文件,读取所有行并负责关闭。

关于C#:将文本文件内容与字符串变量进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7251117/

相关文章:

.net - 使用 DI 传递同一接口(interface)的多个实现

string - 有没有办法有条件地 `fmt` 一个字符串?

c# - 添加为服务引用时 WCF 消息协定缺少 header

c# - 为什么在派生类中不能像在 C# 中的基类中那样使用事件?

c# - 更新后数据集空行

c# - 如何从winforms获取wpf窗口实例

c# - 使用 Compile Assembly From Source 计算 C# 中的数学方程

c# - 无法使用适用于 .NET 的 EMDK

c# - 如何获取字符串中的最后一个字符

java - 如何从数组列表中的字符串中删除单词?