【问题标题】:Current program location?当前的程序位置?
【发布时间】:2015-09-04 16:08:59
【问题描述】:

目前正在编写需要存储数据的软件(我知道,它是那么先进),但我不知道人们会将其保存在哪里。默认情况下,我希望将其保存到 C:\,但这不适用于使用 N:\ 作为默认驱动器的服务器。

我可以将其更改为使用 N:\,但如果有人选择在具有其他任何驱动器的系统上运行它,我也会遇到同样的问题。

我知道你可以得到当前程序的位置,但是我怎样才能复制第一部分以便我可以使用它。

例子

程序位置:X:\Something\Something\program.exe

我希望能够从中获取:X:\Something\Something 并添加要创建的新文件的名称 (newdatafile.txt),使其变为 X:\Something\Something\newdatafile.txt

我正在使用 C#。

【问题讨论】:

  • 如果你省略 X:\Something\Something\ 部分而只使用文件名,我相信它会自动找出程序位置的 X:\Something\Something\。例如,我将 HelpProviderHelpNamespace 分配给仅一个 help.chm 文件,它会自动在 Program Files 中查找(针对我的个人情况)。如果我错了,请随时纠正我。
  • 好的,我试试看:)
  • 您能否澄清一下您是在寻找当前程序位置 (stackoverflow.com/questions/6041332/…) 还是您实际上对默认情况下应该将用户文件存储在哪里感兴趣 (stackoverflow.com/questions/9659127/…)? (恐怕两个版本都会重复,但也许您正在寻找完全不同的东西)
  • 两者兼而有之。我想要的是正在运行的程序的当前路径,然后是如何使用该文件路径来编写文本文件。最终结果是无论用户在哪里运行程序,它创建的 .exe 和数据都在同一个位置。

标签: c# file location


【解决方案1】:

我认为这会满足您的要求:

var exeFolder = System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\";

然后只需将新文件名附加到末尾即可。

【讨论】:

  • 附加文件名我推荐Path.Combine(exeFolder, fileName);,因为它会为你处理斜线。
  • 请注意,这正是 OP 所要求的,但将用户数据保存在可执行文件旁边对于“每用户”安装的应用程序并不是一个好主意,对于每台机器安装一次(因为普通用户将无法写入此类文件夹)。
  • 好点。在这种情况下,OP 应该查看环境特殊文件夹 msdn.microsoft.com/en-us/library/…
【解决方案2】:

您可以使用 SaveFileDialog 来处理所有繁重的工作。

https://msdn.microsoft.com/en-us/library/sfezx97z(v=vs.110).aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 2014-07-12
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多