从文本文件c#StringBuilder中读取变量

时间:2015-02-21 07:06:37

标签: c# text-files streamreader

我无法让这个工作。我尝试了几种不同的方法,但它们都因为收到错误而失败,说明“mscorlib.dll中发生了'System.ArgumentException'类型未处理的异常。附加信息:路径中的非法字符。”我把代码放在测试环境中时才会得到。在其预定的位置,它只是跳过没有错误。

程序进入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]);
        }

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:0)

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]);

}

答案 1 :(得分:0)

我怀疑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