我有这种文本文件显示如下。我想将此文件读取到空行并在消息框中显示该行,然后删除包含我刚读过的空行的文本行,并且将重复相同的过程,直到读取整个文件。我虽然没能读过一行。
**Hi**
**Hello**
**How are you?
I am fine.**
**And how about you?
Me too fine
Whats going on.**
这是代码示例。
StreamReader sr = new StreamReader(fileNameAndPath);
string line;
try
{
while ((line = sr.ReadLine()) != null)
{
if(line.StartsWith(null))
{
MessageBox.Show(line);
}
sr.Close();
}
}
catch
{
MessageBox.Show("Got empty line while reading a file");
}
答案 0 :(得分:0)
StartsWith()
无法通过null
。
这应该有效:
StreamReader sr = new StreamReader(fileNameAndPath);
string line;
try
{
while ((line = sr.ReadLine()) != null)
{
if(line == null || line == "")
{
MessageBox.Show(line);
}
sr.Close();
}
}
catch
{
MessageBox.Show("Got empty line while reading a file");
}
答案 1 :(得分:0)
所以有几件事:
空字符串和空字符串之间存在差异。您可以将字符串视为cookie jar(其中字符是Cookie)...空字符串(例如string.empty
或""
)是一个没有cookie的cookie jar。而null
表示根本没有饼干罐。当您读取文件行时,只要有一行要读取,它总是返回一个字符串。所以空行返回为空字符串。
说到这一点,虽然空行开始没有任何东西,但它并不是在检查您想要知道的确切内容。编码解决方案
几乎相同的事情"在以后的生活中会让你遇到很多麻烦。更合适的检查类似于string.IsNullOrEmpty(line)
最后,如果您想删除部分文件&#34;,我建议您实际删除所有文件,然后只编写您想要保留的部分&#34; 。所以你应该做的是将整个文件读成List<string>
。然后,删除您不想要的列表中的项目。之后,使用列表中的其余项覆盖该文件。您可以同时读取和写入文件,但我个人觉得它很混乱,我认为它符合您的逻辑。但最重要的一点(在两种情况下)都可以帮助您查找如何执行此操作:从文件中删除信息被视为写入文件。因此,请查看如何写入文件以从中删除内容。
答案 2 :(得分:-1)
您无法将null
传递给StartsWith()
。见这里:https://msdn.microsoft.com/en-us/library/baketfxw(v=vs.110).aspx
建议你所追求的是
if (string.IsNullOrEmpty(line))
{
...
}