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 に答える