我有一个项目通过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文件(程序不会更改它们的内容),因此我的应用程序将是可移植的。
答案 0 :(得分:0)
在您的情况下,只需更换路径Resources\FileName.txt
在其他情况下,正如您所提到的那样,您想制作一个便携式.exe文件。然后,您需要在应用程序中嵌入文件。现在看看如何在.exe中嵌入文件:
Properties
Solution Explorer
双击Resources
在Resources
标签的左上角,会有一个组合框
选择文件
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());
}