如何在XNA中使用StreamReader

时间:2012-05-15 11:43:07

标签: c# xna streamreader

我在使用StreamReader时遇到了一些问题。首先,下面是我的简单代码:

using (StreamReader reader = new StreamReader("Content/Levels/" + mapName + ".txt"))
{
    for (int i = 0; i < 20; i++)
        for (int j = 0; j < 36; j++)
        {
            string[] objLoc = reader.ReadLine().Split(',');
            map[i, j] = Convert.ToInt32(objLoc[j]);
        }
}

所以,我有一个包含行和列的文本文件,就像一个数组一样。每个位置都有一个整数。这些整数由字符分隔。

我想从文本文件中的位置读取每个字符,然后将其转换为实际的整数并将其添加到单独的数组中。我将从该数组中读取,以便在我向您展示的代码之后构建地图。

作为C#和编程的新手,我假设我的代码实际上使用Split方法从一行读取每个位置,然后我使用read char将其插入到地图数组中。

我做得对吗?目前,我有一个例外:

NullReferenceException未处理:对象引用未设置为对象的实例。

我也阅读了MS的文档。偶然发现了许多类似的问题,但没有解决我的问题。

任何帮助都将受到高度赞赏!

1 个答案:

答案 0 :(得分:1)

您正在内循环中读取一个全新的行,这意味着您的行快速耗尽。你需要在外部循环中读取一个新行,并循环遍历内部循环中的分割结果(单个元素)

尝试类似

的内容
using (StreamReader reader = new StreamReader("Content/Levels/" + mapName + ".txt"))
{
  for (int i = 0; i < 20; i++) {
    string[] objLoc = reader.ReadLine().Split(',')
    for (int j = 0; j < 36; j++) {
      map[i, j] = Convert.ToInt32(objLoc[j]);
    }
  }
}

注意:如果行包含的元素不足或文件太短,则需要检查错误。转换为int可能也会失败