【问题标题】:Read resource text file into an array将资源文本文件读入数组
【发布时间】:2016-01-09 11:54:18
【问题描述】:

我有一个文本文件作为我想读入数组的资源。

 private void button1_Click(object sender, EventArgs e)
    {
        string[] questions = new string[4];
        StreamReader sr = new StreamReader(Properties.Resources.TextFile1);


        for(int i = 0; i < 4; i++)
        {
            questions[i] = sr.ReadLine();
        }
        sr.Close();

        for (int n = 0; n < 4; n++)
        {
           textBox1.Text = questions[n];
        }

然后我尝试了以下代码,但不断收到 Null 异常

        string[] questions = new string[4];
        var assembly = Assembly.GetExecutingAssembly();
        var resourceName = Properties.Resources.TextFile1;

        using (Stream stream = assembly.GetManifestResourceStream(resourceName))
        using (StreamReader reader = new StreamReader(stream))

【问题讨论】:

  • Brilliant Steve 感谢您的帮助,也许是提供一些支持而不是标记问题的链接。我找不到解决我问题的答案。
  • 抱歉,您谈论的是资源文件,因此很明显您应该使用 GetResourceManifestStream 而不是 StreamReader。如果这不起作用,您能否更好地解释您的问题?我会重新打开它。
  • 这对有经验的用户来说是显而易见的,我正在尝试学习,并且已经在 youtube 视频和其他问题上用尽了很多时间,但仍然找不到解决方案,所以在最后一次尝试中我问了一个问题....
  • 您是否将文件的“构建操作”属性设置为“嵌入式资源”?,缺少可使用的资源数据
  • 是的,我仍然遇到 Null 错误

标签: c# arrays text-files internal


【解决方案1】:

由于Properties.Resources.TextFile1 包含文件的内容,您根本不需要使用StreamReader。您可以随意解析字符串。在您的情况下,您可以在换行符上拆分字符串:

var questions = Properties.Resources.TextFile1.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);

【讨论】:

  • 谢谢,我试过了,但收到了过载消息。最好的重载匹配有一些无效的论点
  • 你让它工作了吗? Split 调用时出现编译错误吗?哪些参数无效?
猜你喜欢
  • 1970-01-01
  • 2017-07-16
  • 2011-04-22
  • 2014-09-24
  • 2017-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多