打开文件时出现FileNotFoundException

时间:2013-04-17 20:08:34

标签: c# resources streamreader

我有一个项目通过StreamReader将几个文本文件读入List中,我将文件添加到我的解决方案下的资源,当我尝试使用StreamReader引用该文件时,我得到一个“FileNotFound”异常。

文件正被复制到bin \ debug \ Resources,错误说它正试图在bin \ debug下找到它们。如何在不使用文字路径的情况下引用它们? (例如C:\ users \ etc)因为当我编译它时,如果我引用实际路径,它将无法在另一个人的PC上运行。

调用文本文件的代码:

using (sr = new StreamReader("FileName.txt"))
{
    while (!sr.EndOfStream)
        Names.Add(sr.ReadLine());
}

在文本文件属性下,我将其设置为“始终复制”,并在“构建操作”下将其设置为“嵌入式资源”。

基本上我的主要目标是将项目编译成一个内部引用文本文件的exe文件(程序不会更改它们的内容),因此我的应用程序将是可移植的。

2 个答案:

答案 0 :(得分:0)

在您的情况下,只需更换路径Resources\FileName.txt

即可删除错误

在其他情况下,正如您所提到的那样,您想制作一个便携式.exe文件。然后,您需要在应用程序中嵌入文件。现在看看如何在.exe中嵌入文件:

  • 展开Properties
  • 中的Solution Explorer
  • 双击Resources

    Resources标签的左上角,会有一个组合框 enter image description here

  • 选择文件

  • 现在只需将文件拖放到那里
  • 要嵌入文件,您可以右键转到每个文件的属性 点击它。从Embedded in .resx中选择Persistence 属性。

要使用该文件,您可以使用Properties.Resources.YourFile

有关详情,请点击http://msdn.microsoft.com/en-us/library/7k989cfy(v=vs.80).aspx

链接

答案 1 :(得分:0)

错误很明显。将代码更改为:

using (sr = new StreamReader("Resources\FileName.txt"))
{
    while (!sr.EndOfStream)
        Names.Add(sr.ReadLine());
}