从文本文件</string>添加到列表<string>

时间:2013-06-11 03:54:58

标签: c# .net io

我想要通过设置为项目资源的文本文件填充List<string>。我已经查看了一些方法,但尚未找到一个不会导致程序崩溃的方法。

如果我手动填充列表......

_names.Add("Sam");
_names.Add("John");
_names.Add("Mike");

......一切正常。我的文本文件在单独的行上有每个名称,没有逗号或任何东西。当我尝试读取名称时,无论我走哪条路线,程序都会崩溃。这是我尝试过的最新方式,不过还有很多其他方式:

using (var reader = new StreamReader(Properties.Resources.sampleNamesMale))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        _names.Add(line);
    }
}

另外,我无法找出崩溃的原因,因为每次崩溃都会提到ViewModelLocator,这与此问题完全无关。

有人对如何解决此问题有任何想法吗?我当然会感激任何建议。

更新: Try-catch不会产生任何结果。这是我得到的错误:

发生了XamlParseException - '在类型'AoW.ViewModels.ViewModelLocator'上调用与指定绑定约束匹配的构造函数引发异常。行号“13”和行位置“10”。

它指向我主窗口构造函数中的InitializeComponent()。

更新2:真正的例外是:

“发生了ArgumentException - 路径中的非法字符。”它指向使用(var reader .... line。

3 个答案:

答案 0 :(得分:5)

使用StringReader而不是StreamReader:

using (var reader = new StringReader(Properties.Resources.sampleNamesMale))

您收到该错误,因为StreamReader(字符串)需要文件路径。如果要在Properties.Resources.sampleNamesMale中提供实际文本,则必须使用StringReader。

答案 1 :(得分:1)

获得例外的唯一方法是:

  

发生ArgumentException - 路径中的字符非法。

如果Properties.Resources.sampleNamesMale返回的路径确实无效:

using (var reader = new StreamReader(Properties.Resources.sampleNamesMale))

答案 2 :(得分:1)

第二次更新后答案很简单:在调试器中显示文件的路径是什么并使其正确。可能它最后包含空格或未转义\