从文本文件创建变量

Create variables from text file

我想将变量存储在 .txt 文件中 - 就像我经常在人们 config.txt 文件中看到的那样:

var_name = ['"test url"']

我有下面的代码可以打开文件并读取它(目前只是调试并显示文件中的内容,目前只有 1 个变量)

System.IO.StreamReader myFile = new System.IO.StreamReader("C:\conf\config.txt");
string myString = myFile.ReadToEnd();

myFile.Close();

MessageBox.Show(myString);

文件中的内容是

file_name="C:\test.txt"

现在我希望能够在 VB 表单的函数中使用该变量。我该怎么做呢?而且,我该怎么做多个;所以我基本上可以有一个很大的变量列表,在启动时加载表单?

例如:

// Opens file and reads all variables
// Saves all variables to form
// Can now use varaible in form, e.g. messageBox.Show(file_name);

我是 C# 的新手,我想它类似于包含,但包含是本地的而不是项目的一部分。

免责声明:标准做法(即Settings)通常是最佳政策,但是问题已经被提出并且可以回答:

我建议使用 字典,例如

  Dictionary<String, String> MySettings = File
    .ReadLines(@"C:\conf\config.txt")
    .ToDictionary(line => line.Substring(0, line.IndexOf('=')).Trim(),
                  line => line.Substring(line.IndexOf('=') + 1).Trim().Trim('"'));

  ...

  String testUrl = MySettings[var_name];

但是,如果您更喜欢 "variables",您可以尝试 ExpandoObject:

  dynamic ExpSettings = new ExpandoObject();

  var expandoDic = (IDictionary<string, object>) ExpSettings;

  foreach (var pair in MySettings)
    expandoDic.Add(pair.Key, pair.Value);

  ...

  String testUrl = ExpSettings.var_name;

我在 c# 中使用 Json 反序列化/序列化存储和加载数据(或变量)。

这是序列化:我制作了一个对象(postlist,这是一个对象列表),我想将其保存在文本文件中这样:

 private void save_file()
    {
        string path = Directory.GetCurrentDirectory() + @"\list.txt";
        string json = JsonConvert.SerializeObject(postlist);
        File.WriteAllText(path, json);
        Application.Exit();
    }

您需要安装Newtonsoft.Json:http://www.newtonsoft.com/json .您可以使用 Nuget 工具控制台来完成。 不要忘记使用:

using Newtonsoft.Json;

这是一种从文本文件中获取所有数据的方法,这就是反序列化:

private void read_file_list()
    {
        string line;

        try
        {
            using (StreamReader sr = new StreamReader("list.txt"))
            {
                line = sr.ReadToEnd();
            }
            JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings();
            jsonSerializerSettings.MissingMemberHandling = MissingMemberHandling.Ignore;
            postlist = JsonConvert.DeserializeObject<List<Post>>(line, jsonSerializerSettings);
        }
        catch 
        {
           // catch your exception if you want
        }
    }

这是我将所有文本存储在对象列表中的方式 "postlist"。

Newtonsoft 非常有用且易于使用,我主要用它来获取 api 的数据。

第一次回答希望对你有帮助