【问题标题】:Getting text file and is shiped with appliction获取文本文件并随应用程序提供
【发布时间】:2012-10-08 06:27:51
【问题描述】:

我有一个存储一些站点链接的文件。直到现在我都用过:

string path = Environment.CurrentDirectory + "/forumlinks.txt";

但我想将文件存储在发布文件夹中以便我可以更改它,并且我知道它将为用户永久更改。

所以我改成这样:

string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"/forumlinks.txt";

但我得到一个例外:

System.IO.FileNotFoundException。

我的问题:这是从发布文件夹中获取文件的正确方法吗?我应该重新考虑一下并将他存放在不同的地方吗?如果是这样,我会很高兴听到这个消息。

【问题讨论】:

  • 你用的是winforms、asp.net还是什么?

标签: c# asp.net file exception-handling path


【解决方案1】:

我不明白您需要调用的原因

System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)) 

完全没有。这就是诀窍:

AppDomain.CurrentDomain.BaseDirectory

【讨论】:

  • 当我发布应用程序并第一次运行时,找不到该文件,但在我使用重写功能后,它会创建它,我可以根据您的建议获取它(空)。这是为什么呢?
  • 好吧,如果文件不存在你不能打开它,我的建议是在你尝试打开它之前确保它存在,或者更好:检查它是否存在,如果它不存在'不要创建它
  • 问题是我想用一些数据发送应用程序。用户可以根据需要删除,但我仍然想在里面放一些基本的东西。在我的情况下这可能吗?
  • 所以,文件存在,但应用程序找不到?你确定你在 asp 中调用了正确的事件吗?
【解决方案2】:

硬编码代码发布文件夹的路径是危险的。如果您出于某种原因想在调试模式下构建怎么办?当您想要部署程序时会发生什么?

更好的选择是使用环境的应用程序数据文件夹。这对于每个用户来说都是不同的,因此这意味着每个用户都可以拥有自己的文件版本。

有关如何获取应用程序数据文件夹的详细信息,请参阅this post

【讨论】:

    【解决方案3】:

    假设前锋 / 是一个错字。 如果您已将测试文件添加到项目中,请检查其属性,如果较新则需要复制/始终复制以将其放入 bin\Debug 或 bin\Release,以及 exe 和 dll 以及其他 gubbins。

    您为什么要这样做,您是否打算更改文件,而不必重新构建应用程序?

    【讨论】:

    • 是的,这是一个错字,我想我是分层的。我没有注意到我没有将文件移动到文件夹 lol(深夜编码)
    【解决方案4】:

    我弄错了,发现使用这段代码是对的:

    string path =  System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\fourmlinks.txt";
    

    如果你输入了正确的文件名,但仍然得到一个异常,表明文件不在正确的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      相关资源
      最近更新 更多