3

我有一个有趣的问题——我尝试了几个可以读取文本文件的脚本,没关系。

当文本文件末尾有空行时会出现问题 - 该行被“忽略”。

我使用的代码是用于文件读取的“常规”代码,如下一个:

string fullFileName;
fullFileName = "myFile.txt";
var lines = File.ReadAllLines(fullFileName);
string fileContent = null;
bool firstLine = true;

foreach (var line in lines) {
    if (firstLine != true)
    {
        //textBox1.Text += System.Environment.NewLine;
        fileContent += System.Environment.NewLine;
    }
    else
    {
        firstLine = false;
    }
    //textBox1.Text += line;
    fileContent += line;
}

textBox1.Text = fileContent;

因此,如果文件 myFile.txt 的最后一行为空,则它不会显示在 TextBox 中。

你能帮我看看哪里有问题吗?

4

4 回答 4

5

我认为您可以完全避免循环,只需执行以下操作:

textBox1.Text = File.ReadAllText(fullFileName);

这将保留所有换行符。

于 2013-08-15T11:08:31.750 回答
1

这是文件表示的问题,而不是 ReadAllLines 的问题。看到这个线程:http ://www.pcreview.co.uk/forums/file-readalllines-doesnt-read-last-blank-line-weird-t3765200.html

于 2013-08-15T11:12:10.150 回答
0

其他解决方案:

using (FileStream fileStream = File.OpenRead("C:\myFile.txt"))
using (StreamReader streamReader = new StreamReader(fileStream))
{
    string fileContent = streamReader.ReadToEnd();

    textBox1.Text = fileContent;
}
于 2013-08-15T11:11:18.540 回答
0
File.ReadAllLines(fullFileName);

不读取回车符 ('\r')。我认为你的最后一行只包含回车,这就是为什么它没有被阅读。在最后一行放空格以检查。

http://msdn.microsoft.com/en-us/library/s2tte0y1.aspx

于 2013-08-15T11:12:15.183 回答