2016-12-27 65 views
0

我目前正在爲我開發的After Effects腳本開發自定義安裝程序。我的計劃是將需要複製到某個目錄中的文件放在我正在創建的安裝程序的JAR文件中。在Java項目中使用文件

我的問題是這樣的。我應該在哪些Java項目結構中放置文件? (如果有幫助,我使用Eclipse)。其次,我如何訪問並將這些文件複製到最終用戶計算機上的自定義位置?任何代碼示例都會非常感謝,因爲我習慣用HTML和JavaScript進行開發。謝謝。

- 作爲一個方面說明,我知道這個問題的變種之前已經發布。然而,這些問題並沒有特別針對這個問題,因此使用壽命很短。

+0

你應該保持在同一個文件的文件的Java源代碼將是,通常src文件夾 – ekeith

回答

0

jar中的文件是隻讀的資源。人們可以拿到它們

ClassInJar.getResource("/.../.../readme.html") 

getResourceAsStream或諸如此類。

尼斯也是外部形式:

Path path = Paths.get("jar:file:/ ... install.jar!/.../.../readme.html"); 
Files.copy(path, ...); 

使用的getResource蝕應用,其中,所述罐可能不是類路徑上內(甚至不希望是類路徑上)是不可行的,所以請使用jar:協議輕鬆地將文件從zip文件系統中複製出來。

+1

您的意思是'Paths.get(URI.create(「罐子: file:/ ... install.jar!/.../.../ readme.html「));'? – VGR

+0

@VGR通常我通過一個URI來完成,所以這可能是要走的路。你的評論是禮貌的「需要一個URI而不是一個字符串」? –

+0

非常。從我所知道的,Paths.get(String ...)方法需要路徑組件。我期望傳遞一個包含URI的字符串失敗。 – VGR

0

你可以從技術上把它們放在任何你想要的地方。約定在這裏https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_project_layout,所以src/main/resources可能有意義,這取決於你實際所指的是什麼。

複製文件可以用很多方法完成。 (被盜從這裏:https://examples.javacodegeeks.com/core-java/io/file/4-ways-to-copy-file-in-java/

private static void copyFileUsingJava7Files(File source, File dest) 
     throws IOException { 
    Files.copy(source.toPath(), dest.toPath()); 
} 
+0

因此,如果我把'/src/com/mypackage/resources/file.txt'來訪問這個文件,用這個目錄創建一個文件對象的實例,那會起作用嗎? –

+0

約定將是package/src/main/resources。它的工作是非常通用的,但它可以工作嗎?絕對取決於你的實現。基本上我說的是發佈你的代碼,我們可以從那裏幫助。 – visch