我想读取文本文件到空行,然后删除我从中读取的文本

时间:2018-01-17 16:35:04

标签: c#

我有这种文本文件显示如下。我想将此文件读取到空行并在消息框中显示该行,然后删除包含我刚读过的空行的文本行,并且将重复相同的过程,直到读取整个文件。我虽然没能读过一行。

**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");
            }

3 个答案:

答案 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))
{
   ...
}