从文本文件中读取变量 c# StringBuilder
Reading Variables from a text file c# StringBuilder
我无法让它工作。我尝试了几种不同的方法,但由于出现 "An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll Additional information: Illegal characters in path." 错误,它们都失败了,只有当我将代码放在测试环境中时,我才会得到这个错误。在它预定的位置它只是跳过而没有错误。
程序到达 using 语句后,它会跳过其余部分。
using (StreamReader sr = File.OpenText(Resource1.TextFile1))
{
StringBuilder sb = new StringBuilder();
sb.Append(sr.ReadToEnd());
string[] resp = sb.ToString().Split('\t');
Globals.round1 = Convert.ToDouble(resp[0]);
Globals.round2 = Convert.ToDouble(resp[1]);
Globals.round3 = Convert.ToDouble(resp[2]);
Globals.round4 = Convert.ToDouble(resp[3]);
Globals.round5 = Convert.ToDouble(resp[4]);
Globals.round6 = Convert.ToDouble(resp[5]);
Globals.round7 = Convert.ToDouble(resp[6]);
Globals.round8 = Convert.ToDouble(resp[7]);
Globals.jackpot = Convert.ToDouble(resp[8]);
}
感谢您提供的任何帮助。
按照您可以看到的方式尝试 link:
首先将您的文本文件放入一个文件夹中。那么,
var assembly = Assembly.GetExecutingAssembly();
var resourceName = "MyProject.MyProjectFolder.TextFile1.txt";
using (Stream stream = assembly.GetManifestResourceStream(resourceName))
using (StreamReader sr = new StreamReader(stream))
{
StringBuilder sb = new StringBuilder();
sb.Append(sr.ReadToEnd());
string[] resp = sb.ToString().Split('\t');
Globals.round1 = Convert.ToDouble(resp[0]);
Globals.round2 = Convert.ToDouble(resp[1]);
Globals.round3 = Convert.ToDouble(resp[2]);
Globals.round4 = Convert.ToDouble(resp[3]);
Globals.round5 = Convert.ToDouble(resp[4]);
Globals.round6 = Convert.ToDouble(resp[5]);
Globals.round7 = Convert.ToDouble(resp[6]);
Globals.round8 = Convert.ToDouble(resp[7]);
Globals.jackpot = Convert.ToDouble(resp[8]);
}
我怀疑 Resource1.TextFile1
实际上是作为 string
嵌入的文本文件, 而不是文件路径。
改变
using (StreamReader sr = File.OpenText(Resource1.TextFile1))
{
StringBuilder sb = new StringBuilder();
sb.Append(sr.ReadToEnd());
...至:
StringBuilder sb = new StringBuilder();
sb.Append(Resource1.TextFile1);
该错误是因为您实质上是将文本文件的内容作为文件路径而不是文件路径传递。
将文本文件添加到 VIsual Studio 项目.Properties.Resources.Files 的好处是您不需要' 需要关心文件路径。 (实际上这适用于以这种方式添加的所有资源)
另外,因为你只做一个字符串操作,没必要用StringBuilder
.
我无法让它工作。我尝试了几种不同的方法,但由于出现 "An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll Additional information: Illegal characters in path." 错误,它们都失败了,只有当我将代码放在测试环境中时,我才会得到这个错误。在它预定的位置它只是跳过而没有错误。
程序到达 using 语句后,它会跳过其余部分。
using (StreamReader sr = File.OpenText(Resource1.TextFile1))
{
StringBuilder sb = new StringBuilder();
sb.Append(sr.ReadToEnd());
string[] resp = sb.ToString().Split('\t');
Globals.round1 = Convert.ToDouble(resp[0]);
Globals.round2 = Convert.ToDouble(resp[1]);
Globals.round3 = Convert.ToDouble(resp[2]);
Globals.round4 = Convert.ToDouble(resp[3]);
Globals.round5 = Convert.ToDouble(resp[4]);
Globals.round6 = Convert.ToDouble(resp[5]);
Globals.round7 = Convert.ToDouble(resp[6]);
Globals.round8 = Convert.ToDouble(resp[7]);
Globals.jackpot = Convert.ToDouble(resp[8]);
}
感谢您提供的任何帮助。
按照您可以看到的方式尝试 link:
首先将您的文本文件放入一个文件夹中。那么,
var assembly = Assembly.GetExecutingAssembly();
var resourceName = "MyProject.MyProjectFolder.TextFile1.txt";
using (Stream stream = assembly.GetManifestResourceStream(resourceName))
using (StreamReader sr = new StreamReader(stream))
{
StringBuilder sb = new StringBuilder();
sb.Append(sr.ReadToEnd());
string[] resp = sb.ToString().Split('\t');
Globals.round1 = Convert.ToDouble(resp[0]);
Globals.round2 = Convert.ToDouble(resp[1]);
Globals.round3 = Convert.ToDouble(resp[2]);
Globals.round4 = Convert.ToDouble(resp[3]);
Globals.round5 = Convert.ToDouble(resp[4]);
Globals.round6 = Convert.ToDouble(resp[5]);
Globals.round7 = Convert.ToDouble(resp[6]);
Globals.round8 = Convert.ToDouble(resp[7]);
Globals.jackpot = Convert.ToDouble(resp[8]);
}
我怀疑 Resource1.TextFile1
实际上是作为 string
嵌入的文本文件, 而不是文件路径。
改变
using (StreamReader sr = File.OpenText(Resource1.TextFile1))
{
StringBuilder sb = new StringBuilder();
sb.Append(sr.ReadToEnd());
...至:
StringBuilder sb = new StringBuilder();
sb.Append(Resource1.TextFile1);
该错误是因为您实质上是将文本文件的内容作为文件路径而不是文件路径传递。
将文本文件添加到 VIsual Studio 项目.Properties.Resources.Files 的好处是您不需要' 需要关心文件路径。 (实际上这适用于以这种方式添加的所有资源)
另外,因为你只做一个字符串操作,没必要用StringBuilder
.