C#从文本文件,新行读取

时间:2015-01-20 10:51:00

标签: c# file-io

我将文本写入文件的代码完美无缺......

        string path = @"./prefs.dat";
        string stringdir = textBox1.Text + Environment.NewLine + textBox2.Text + Environment.NewLine;
        System.IO.File.WriteAllText(path, stringdir);

然后从文件中读取我使用这个代码再次完美地工作......

        Process test = new Process();
        string FileName = "prefs.dat";
        StreamReader sr = new StreamReader(FileName);
        List<string> lines = new List<string>();
        lines.Add(sr.ReadLine());
        string s = lines[0];
        sr.Close();
        test.StartInfo.FileName = s;
        test.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        test.StartInfo.CreateNoWindow = false;
        test.Start();

然而,当我想使用完全相同的代码读取第二行,除了更改...

       string s = lines[1]; 

然后它失败了,我得到一个null结果。当我进一步研究时,即使我显然有两行,错误甚至看不到第二行。

3 个答案:

答案 0 :(得分:6)

ReadLine()方法一次读取一行,您需要通过以下方式使用while循环添加所有行:

string line="";
while((line = sr.ReadLine()) != null)
{
   lines.Add(line);

}

string s = lines[1];

请参阅this MSDN article (Reading a Text File One Line at a Time) for more details

另一种方法是使用ReadAllLines()一次读取所有行,然后访问第二行:

string[] lines = System.IO.File.ReadAllLines(stringdir);
string s = lines[1];

请参阅this MSDN article on How to: Read From a Text File

答案 1 :(得分:1)

您还可以完全阅读所有行

string[] lines =  System.IO.File.ReadAllLines("path");

答案 2 :(得分:0)

如果您希望将第二行的内容设为string s = lines[1];,则需要先将其添加到列表中

    Process test = new Process();

    string FileName = "prefs.dat";
    StreamReader sr = new StreamReader(FileName);
    List<string> lines = new List<string>();
    lines.Add(sr.ReadLine()); 
    lines.Add(sr.ReadLine());
    string s1 = lines[0];
    string s2 = lines[1]; // Now you can access second line
    sr.Close();
    test.StartInfo.FileName = s;
    test.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    test.StartInfo.CreateNoWindow = false;
    test.Start();