2013-03-08 103 views
0

我是新来的java.nio世界。如何使用java.nio.file.Path访问本地项目文件?

我的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"); 

我不知道,如果有人得到这个代码,并拥有自己的机上类似的文件夹结构来访问应用程序。 jar

我已经将文件app.jar保存在我的测试写入的本地文件夹中。有什么方法可以概括这个路径?如果我的Test类位于app.jar所在的同一文件夹下,是否有避免提及完整本地路径的机制?

感谢, 维杰Bhore

+0

我的识别TestClass路径是:“C:\\ Perforce的\\仓库\\项目\\模块\\ SRC \\测试\\一个\\ b \\Ç \\ TestClass.java“ – 2013-03-08 01:06:30

+0

给'Paths.get'一个相对路径。 – Jeffrey 2013-03-08 01:12:33

+0

是否指我的TestClass.java中的Paths.get(“app.jar”)? – 2013-03-08 01:18:03

回答

0

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

也就是说,如果app.jar直接位于您的app_home文件夹下,并且app_home是您运行java.exe的位置,则Paths.get(“app.jar”)应该可以工作。

+0

通常,您可以在任何文件夹中定义perforce repo,例如C:/ perforce在我的情况。有人可能会在C:/ views中做到这一点。我不想用我的本地位置检查TestClass.java文件中的app.jar文件。如果我的文件位于C:/ perforce中,则其他开发人员可能无法检查C:/ views中的app.jar文件。就像我们使用web应用程序中的本地资源或使用相对路径的普通应用程序一样,我们是否也可以为app.jar文件执行此操作? – 2013-03-08 01:32:04

0

@Jeffrey

是的,它必须与怎样的IntelliJ文件系统。

通常情况下,项目根目录是搜索文件的位置。 如果我的项目的根是C:\ Perforce公司\车厂\ TestProject \ MAIN然后Paths.get( “app.jar”)试图查找该文件中C:\ Perforce公司\车厂\ TestProject \ MAIN \应用的.jar

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

因此,我有实际调用

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

这解决了我的问题。

谢谢,

维杰Bhore

+0

我建议从你的bin或class文件夹中选择它,而不是src – 2013-03-08 02:14:20

+0

由于这个模块是一个测试模块,我认为测试资源可以直接保存在src/test文件夹下。但是,是的,我明白了你的观点,即罐子或任何档案应该放在箱子或类别文件夹下。 – 2013-03-08 18:50:00

相关问题