2013-04-17 77 views
2

我有一个通过StreamReader将几个文本文件读入List的项目,我在Resources下添加了我的解决方案,当我尝试使用StreamReader引用文件时,我得到一个“FileNotFound”例外。打开文件时FileNotFound异常

的文件被复制到BIN \调试\资源,并且错误说,它正试图找到他们根据斌\调试..我如何引用他们不使用文字路径? (例如C:\用户\等),因为当我编译,如果我引用实际路径就不会其他人的电脑上运行。调用文本文件

代码:

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

下的文本文件的属性我有它设置为“一直拷贝”下生成操作它被设置为“嵌入的资源”。

基本上我的主要目标是将项目编译为一个exe文件,并在内部引用文本文件(它们的内容不会被程序改变),所以我的应用程序将是可移植的。

+0

您是否尝试过 “资源/则Filename.txt”? :) – J0HN

+0

尝试复制bin \ debug下的文件 –

+0

使用相对文件路径。 – tnw

回答

0

错误是显而易见的。更改代码:

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

在您的情况,将仅更换路径Resources\FileName.txt

在其他情况下,你提到你想使便携式.exe文件被删除的错误。然后你需要在应用程序中嵌入文件。现在看看如何在您的.exe文件中嵌入:

  • 展开PropertiesSolution Explorer
  • 双击Resources

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

  • 选择文件

  • 现在只需拖放y我们的文件
  • 要嵌入文件,您可以通过点击右边的 去每个文件的属性。选择从Persistence 财产Embedded in .resx

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

有关详细信息,请链接http://msdn.microsoft.com/en-us/library/7k989cfy(v=vs.80).aspx

+0

(对不起,雷电导致电力出现在我家,现在回来)您的回答非常明确,但可以在哪里设置“嵌入.Resx”? i.imgur.com/amQpvUC。png – Abraham

+0

是的,这个选项不适用于'Files',但是它和其他嵌入式文件一样工作。我从来没有研究过它,为什么,对我感到羞耻! – Shaharyar