代码之家  ›  专栏  ›  技术社区  ›  rtpg

在调试模式下运行的程序中的相对路径[VS2010]

  •  1
  • rtpg  · 技术社区  · 14 年前

    我正在visual C中调试一个程序,在程序中,我使用相对路径访问一个文件。

      Stream s = File.Open("usr.dat", FileMode.OpenOrCreate);
    

    它当前正在(Project Folder)/bin/x86/Debug文件夹(编译的可执行文件在其中)中输出。有没有办法改变相对路径的起点?

    编辑:我发现我可以简单地更改属性中的项目工作目录。谢谢你们的意见,伙计们

    3 回复  |  直到 14 年前
        1
  •  3
  •   Hans Passant    14 年前

    是的,你不能这样离开。当您在启用了UAC或使用非管理员用户帐户运行的计算机上部署程序时,此操作将失败。您将没有对存储EXE的目录的写入权限。

    查看Environment.GetFolderPath()以查找您将具有写入权限的appdata文件夹之一。

        2
  •  1
  •   Jason Williams    14 年前

    不要使用“当前目录”-这是80年代的一种方法,很容易被破坏(例如,如果使用文件打开对话框,用户可以将当前目录留在任何地方,用户可以在运行应用程序时更改当前目录,等等)。

    因此,要找到起点,可以使用Application.StartupPath。

    如果要写入文件,则应使用用户的“我的文档”文件夹(用于用户可见的数据)或“应用程序数据”文件夹(用于希望对用户“隐藏”的内部数据)。使用Environment.GetFolderPath()访问这些路径(例如Environment.SpecialFolder.ApplicationData等)

        3
  •  -1
  •   iwritecode    14 年前

    EXE的当前位置正被用作正在处理的文件的默认路径,因为您只指定了文件名。如果在文件名之前使用文件路径(包含完整文件夹层次结构的字符串),它应该可以做到这一点。

    您可能希望将路径另存为单独的字符串变量,并将其与文件名连接起来。将路径分隔成变量也有助于在以下文件函数中验证它