从文本文件创建变量
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 的数据。
第一次回答希望对你有帮助
我想将变量存储在 .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 的数据。
第一次回答希望对你有帮助