2

我有一个通过 StreamReader 将多个文本文件读入列表的项目,我将文件添加到资源下的解决方案中,当我尝试使用 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,并在内部引用文本文件(程序不会更改它们的内容),因此我的应用程序将是可移植的。

4

2 回答 2

0

在您的情况下,只需替换路径即可删除错误Resources\FileName.txt

在其他情况下,正如您提到的,您想要制作一个可移植的 .exe。然后你需要在你的应用程序中嵌入文件。现在看看如何在 .exe 中嵌入文件:

  • 展开Properties_Solution Explorer
  • 双击Resources

    在选项卡的左上方Resources,将有一个组合框 在此处输入图像描述

  • 选择文件

  • 现在只需将文件拖放到那里
  • 要嵌入文件,您可以通过右键单击每个文件来转到每个文件的属性。Embedded in .resxPersistence 属性中选择。

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

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

于 2013-04-17T20:17:33.997 回答
0

错误很清楚。将代码更改为:

using (sr = new StreamReader("Resources\FileName.txt"))
{
    while (!sr.EndOfStream)
        Names.Add(sr.ReadLine());
}
于 2013-04-17T20:18:03.743 回答