我想在我的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 个通用位置来查找资源:
-
当前工作目录。 这是命令提示符所在的位置,也是
System.getProperty("user.dir")
返回的内容,但您不能依赖与文件系统中的任何 cretain 位置相关的 beeing,尤其是与您自己的系统上的项目结构无关。仅当您的程序具有命令行界面并查找要使用的某些默认文件名时,才应使用它。
-
用户主页这是您在呼叫
System.getProperty("user.home")
时得到的。在Unix上,这恢复为$HOME
,在Windows上为%USERPROFILE%
。这是在运行时更改文件或保存用户特定内容的最佳位置。
-
自己的代码位置。与类相同的包中的资源可以使用
getClass().getResource("filenameWithoutPath")
访问 但通常您将资源放在应用程序根目录的特殊文件夹中,并像这样访问它:getClass().getResource("/relative/path/from/src/root/filenameWithoutPath")
.在 IDE 中,应
Project/src/main/resources
此特殊文件夹(根据 maven 标准目录布局这适用于您在创建交付包时更改的某些全局配置。