0

我是 java.nio 世界的新手。

我的 Java 模块中有一个日志文件 app.log。(我正在使用 Intellij 11)。

在一个模块中,我有测试文件夹,我有一个本地文件 app.jar。

我想使用 Files.newInputStream(path) 方法将此文件读入 InputStream。

问题是在 Windows 中,我必须为输入路径提供完整的值,

Path path = Paths.get("C:\\Perforce\\depot\\Project\\module\\src\\test\\a\\b\\c\\app.jar");

我不确定是否有人获得此代码并在他们的机器上具有类似的文件夹结构来访问 app.jar

我将文件 app.jar 保存在编写测试的本地文件夹中。有没有办法可以概括这条路径?如果我的 Test 类位于 app.jar 所在的同一文件夹下,是否有任何机制可以避免提及完整的本地路径?

谢谢,维杰博尔

4

2 回答 2

0

@杰弗里

是的,它必须与 intellij 文件系统有关。

通常,项目根目录是搜索文件的位置。如果我的项目根目录是C:\perforce\depot\TestProject\Main然后Paths.get("app.jar")尝试在C:\perforce\depot\TestProject\Main\app.jar中查找文件

实际上我有一个模块com.xyz在这个模块中我有 src 文件夹,我有测试根文件夹,我有 app.jar 文件。

因此,我必须实际调用

Paths.get("com.x.y.z/src/test/app.jar").

这解决了我的问题。

谢谢,

维杰·博尔

于 2013-03-08T01:59:08.930 回答
0

使用相对路径。Paths.get() 将根据当前用户目录解析相对路径名。此目录由系统属性 user.dir 命名,通常是调用 Java 虚拟机的目录。

也就是说,如果 app.jar 直接在您的 app_home 文件夹下,而 app_home 是您运行 java.exe 的位置,那么 Paths.get("app.jar") 应该可以工作。

于 2013-03-08T01:20:41.240 回答