2013-03-08 104 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

相關問題