Bor*_*lov 4 java directory file
请解释一下,为什么当我运行这段代码时,一切都很好,我得到了我的类的父目录:
URL dirUrl = PathsService.class.getResource("..");
Run Code Online (Sandbox Code Playgroud)
当我运行这段代码时:
URL dirUrl = PathsService.class.getResource("../..");
Run Code Online (Sandbox Code Playgroud)
我在dirUrl中得到null.
我尝试这样:
URL dirUrl = PathsService.class.getResource("..//..");同样我在dirUrl中有一个null.
如何在Java中获取父/父/父...目录?
gka*_*pak 13
通知:
也就是说,您可以尝试以下代码:
import java.nio.file.*;
...
Path path = Paths.get(PathsService.class.getResource(".").toURI());
System.out.println(path.getParent()); // <-- Parent directory
System.out.println(path.getParent().getParent()); // <-- Parent of parent directory
Run Code Online (Sandbox Code Playgroud)
另请注意,上述技术可能适用于您的开发环境,但在"正确"部署应用程序时可能(并且可能会)产生意外结果.
你得到的结果是完全正确的。
我想你误解了使用 class.getResource.
假设你有包裹com.test和MyClass在此包裹内。
这MyClass.class.getResource(".")将为您提供正在执行的文件的位置。表示 的位置MyClass。
这MyClass.class.getResource("..")将在您的包结构中提升 1 级。因此,这将返回 directory 的位置test。
这MyClass.class.getResource("../..")将进一步提升 1 级。因此,这将返回 directory 的位置com。
现在,这MyClass.class.getResource("../../..")将尝试进一步上一级,但由于不存在包目录,这将返回null。
所以,class.getResource不会走出定义好的包结构而开始访问你的电脑目录。这就是它不起作用的方式。这仅在您当前的 类包结构中搜索。
| 归档时间: |
|
| 查看次数: |
30252 次 |
| 最近记录: |