我想在我的Java应用程序中编写JSon文件,它在我的IDE中运行得很好,但是一旦我移动目录,系统就无法编写文件。我最终发现了问题:行System.getProperty("user.dir")
返回错误的路径。
在开发过程中,文件位于C:\wamp\www\myProject
。这是我目前的代码:
String url = System.getProperty("user.dir") + "\\src\\json\\Crc.json";
//Returns "C:\wamp\www\myProject\src\json\Crc.json"
将我的项目移至C:\Users\myUser\Desktop
后:
String url = System.getProperty("user.dir") + "\\src\\json\\Crc.json";
//Returns "C:\Users\myUser\src\json\Crc.json"
我想有办法随时找到我的项目目录在计算机上的位置。你们有解决方案吗?
答案 0 :(得分:1)
C:\wamp\www\myProject
文件夹只是硬盘上的一个随机位置。
Java支持3个通用位置来查找资源:
当前工作目录。这是您的命令提示符以及System.getProperty("user.dir")
返回的位置,但您不能依赖于某种与文件系统中任何cretain位置相关的内容,尤其是与您自己系统上的项目结构无关。
如果您的程序具有命令行界面并查找要使用的默认文件名,则应该只使用它。
用户主页这是您致电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 Standard Directory Layout
这适用于您在创建交付包时更改的某些全局配置。