System.getProperty( "user.dir" ) alternative



我想在我的Java应用程序中编写JSon文件,它在我的IDE中运行良好,但是一旦我移动目录,系统就无法写入文件。我最终发现了问题:System.getProperty("user.dir")返回错误路径的行。

这些文件在开发过程中位于C:wampwwwmyProject中。这是我目前的代码:

String url = System.getProperty("user.dir") + "\src\json\Crc.json";
//Returns "C:wampwwwmyProjectsrcjsonCrc.json"

将我的项目移至C:UsersmyUserDesktop后:

String url = System.getProperty("user.dir") + "\src\json\Crc.json";
//Returns "C:UsersmyUsersrcjsonCrc.json"

我想有一种方法可以随时找到我的项目目录在计算机上的位置。你们有解决方案吗?

C:wampwwwmyProject文件夹只是硬盘上的一个随机位置。

Java 支持 3 个通用位置来查找资源:

  1. 当前工作目录。 这是命令提示符所在的位置,也是System.getProperty("user.dir")返回的内容,但您不能依赖与文件系统中的任何 cretain 位置相关的 beeing,尤其是与您自己的系统上的项目结构无关。

    仅当您的程序具有命令行界面并查找要使用的某些默认文件名时,才应使用它。

  2. 用户主页这是您在呼叫System.getProperty("user.home")时得到的。在Unix上,这恢复为$HOME,在Windows上为%USERPROFILE%

    这是在运行时更改文件或保存用户特定内容的最佳位置。

  3. 自己的代码位置。与类相同的包中的资源可以使用getClass().getResource("filenameWithoutPath")访问 但通常您将资源放在应用程序根目录的特殊文件夹中,并像这样访问它:getClass().getResource("/relative/path/from/src/root/filenameWithoutPath").

    在 IDE 中,应Project/src/main/resources此特殊文件夹(根据 maven 标准目录布局

    这适用于您在创建交付包时更改的某些全局配置。

相关内容

  • 没有找到相关文章

最新更新