【问题标题】:How to read from a file and save to 4 different variables (C#)?如何从文件中读取并保存到 4 个不同的变量(C#)?
【发布时间】:2015-03-27 15:18:32
【问题描述】:

我正在尝试使用我的 SQL 数据库的信息创建一个设置文件,但我目前遇到的问题是我似乎无法读取每一行并将其保存到不同的变量中。

 private void readFile()
    { 
        {
            using (System.IO.StreamReader sr = new System.IO.StreamReader(@"C:\Users\Settings.txt", true))

            while (sr.Peek() >= 0)
            {
                CurrentLine = sr.ReadLine();

            }
        }
    }

我不确定如何设置它,以便我可以将每个不同的行写入我的 4 个变量。

任何帮助将不胜感激!

【问题讨论】:

  • 另一种方法是不要重新发明*,而是使用专为应用程序设置和连接字符串设计的ConfigurationManager Class
  • app.config 文件是你的朋友!

标签: c# sql streamreader system.io.file


【解决方案1】:

我会改用一个数组,您可以通过索引访问它:

string[] lines = File.ReadAllLines(@"C:\Users\Settings.txt");
string firstLine = lines[0];
// and so on, keep in mind that it could have less lines

带有四个变量的StreamReader 方法要麻烦得多:

using (System.IO.StreamReader sr = new System.IO.StreamReader(@"C:\Users\Settings.txt", true))
{ 
    string line;
    int currentLineNumber = 0;
    while ((line = sr.ReadLine()) != null)
    {
        switch (++currentLineNumber)
        {
            case 1: first = line; break;
            case 2: second = line; break;
            case 3: third = line; break;
            case 4: fourth = line; break;
        }
    }
}

【讨论】:

    【解决方案2】:

    当我需要将设置存储在文件中时,我创建了一个类来保存信息,例如

    public class Settings{
       public string ConnectionString {get;set;}
       public string DatabaseName {get;set;}
       public DateTime Started {get;set;}
    }
    

    保存设置:

    var settings = new Settings(){
       ConnectionString = "blah blah blah",
       DatabaseName = "blah blah blah",
       Started = DateTime.Now,
    };
    var json = JsonConvert.SerializeObject(settings);
    File.WriteAllText(@"C:/Settings.txt", json);
    

    加载设置:

    var json = File.ReadAllText(@"C:/Settings.txt");
    var settings = JsonConvert.DeserializeObject(json);
    

    我发现这可靠、灵活且稳定。 这也意味着您不必担心(例如)DateTime 和 String 之间的转换。您也不必担心设置值的顺序。

    (这使用 Json.NET 包。)

    【讨论】: