2016-12-27 5 views
0

私は現在開発しているAfter Effects用のスクリプトのカスタムインストーラを開発しています。私の計画は、コピーする必要のあるファイルを特定のディレクトリに、私が作成しているインストーラのJARファイル内に置くことです。Javaプロジェクト内のファイルを使用する

私の質問はこれです。どこのJavaプロジェクト構造内でファイルを配置する必要がありますか? (私はそれが役立つ場合はEclipseを使用しています)。次に、これらのファイルにアクセスして、エンドユーザーのコンピュータ上のカスタムの場所にコピーするにはどうすればよいですか?私はHTMLやJavaScriptで開発することに慣れているので、コードサンプルは非常に高く評価されます。ありがとう。

- 私はこの質問の変種が以前に掲載されていることを知っています。しかしながら、これらは特にこの質問に特有ではないので、使用寿命が短い。

+0

をあなたは 'Paths.get(URI.create(「ジャーもしかして通常、srcフォルダ – ekeith

答えて

0

jarファイルは読み取り専用です。リソース。それらを得ることができる。

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

getResourceAsStreamなどです。 、不可能である(でも、クラスパス上にあることが望まれていない)JARがクラスパス上にないかもしれないEclipseアプリケーション、内部のgetResourceを使用

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

ニースも外形でありますjar:プロトコルを使用すると、zipファイルシステムから簡単にファイルをコピーできます。

+1

、Javaソースコードは中になり、同じファイル内のファイルを維持する必要がありますファイル:/ ... install.jar!/.../.../ readme.html "));'? – VGR

+0

@VGR一般的に私はURIを介してそれを行いますので、行く方法かもしれません。あなたのコメントは礼儀正しく "Stringの代わりに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

このコンベンションは、パッケージ/ src/main/resourcesになります。それはうまくいくのでしょうか?あなたの実装にはまったく依存します。基本的に私はあなたのコードを投稿し、そこから助けることができると言っています。 – visch

関連する問題