【发布时间】:2013-04-01 07:27:31
【问题描述】:
搜索文件时,应用程序在哪里查找?它是在哪里创建的?总是指定绝对路径是不太现实的。例如。我尝试将要在 Visual Studio 2010 应用程序中使用的文本文件保存在项目解决方案的本地 bin 中,但总是出现运行时错误。
【问题讨论】:
标签: windows search directory absolute-path
搜索文件时,应用程序在哪里查找?它是在哪里创建的?总是指定绝对路径是不太现实的。例如。我尝试将要在 Visual Studio 2010 应用程序中使用的文本文件保存在项目解决方案的本地 bin 中,但总是出现运行时错误。
【问题讨论】:
标签: windows search directory absolute-path
通常是调用它的文件夹。你可以使用_getcwd:http://msdn.microsoft.com/en-us/library/sf98bd4y%28VS.80%29.aspx找到它
【讨论】:
%CD%。如今,我相信这取决于程序的启动方式。例如,如果它是使用链接启动的,它通常是程序 (.exe) 所在的文件夹。但是,它可以在链接的属性中进行更改。不过,我不确定 VC 的默认设置是什么。
如果您使用相对路径,您提供的路径将与进程的工作目录相结合。
很难控制 GUI 进程的工作目录。这是因为 GUI 进程往往以许多不同的方式启动。更重要的是,文件对话框有改变工作目录的趋势。最后,工作目录在进程中的所有线程之间共享,并且可以被任何线程更改。有很多陷阱。
因此,在 GUI 过程中,我建议您永远不要使用相对路径。或者,如果您确实使用相对路径,则在使用它们之前将它们转换为绝对路径。并针对明确定义的根路径执行该转换。
除非您正在编写一个可移植的应用程序,否则您不应该期望能够保存到包含可执行文件的目录中。在现代系统上,可执行文件通常位于只读目录中。
如果您想保存用户设置,请将它们保存在用户配置文件中的适当位置。
另一方面,如果您想读取从未修改过的文件,那么将它们与可执行文件一起存储是合理的。但即使在这种情况下,也要使用完整的绝对路径打开文件。通过将包含可执行文件的目录与文件的相对路径相结合来创建该路径。
所以,总结一下,你说:
总是指定绝对路径是不太现实的。
但我不同意。我会反驳说,使用绝对路径通常是最好的选择。但是您不必对绝对路径进行硬编码。您可以而且应该在运行时创建它。
【讨论】: