タイトルでわかるように、自分のsrcにインポートされたさまざまなファイルを一時ディレクトリにコピーしようとしています。この場合、「Dank」と呼ばれるCドライブにフォルダが作成されています。私がしたいのは、これらの内部ファイル(http://prntscr.com/d39rmt)を一時フォルダにコピーすることだけです。 悪い人は気にしないでください。これは、この部分に関係のないプログラムの残りの部分です。ありがとうございました。 public class sstool extends FileNotFoundException { @SuppressWarnings({ "static-access", "unused" }) public static void main(String[] args) throws IOException { Path newDirectoryPath = Paths.get("C:\\Dank"); if (!Files.exists(newDirectoryPath)) { try { Files.createDirectory(newDirectoryPath); } catch (IOException e) { System.err.println(e); } }
内部パックファイルをJavaの作業ディレクトリにコピーする方法は?
答えて
@Rogueが近いです。アプリケーションに埋め込まれたファイルは通常、Class.getResourceまたはClass.getResourceAsStreamで読み込まれます。
あなたは絶対にFiles.copy、2つのパスの引数を取るだけではない方法を使用する必要があります。
String[] files = {
"cheatsmasher.exe",
"Everything.ini",
"jdgui.jar",
"launcher.jar - Shortcut.lnk",
"LAV.cfg",
"LAV.exe",
"logs - Shortcut.lnk",
"pexplorer32.exe",
"pexplorer64.exe",
"Prefech.lnk",
"schem.exe",
"SE32.exe",
"SE64.exe",
"skypefiles.lnk",
"smash.dll",
"synpase.lnk",
"TM.lnk",
"TS3Client.lnk",
"USB32.cfg",
"USB32.exe",
"USB64.cfg",
"USB64.exe",
"Vape.dll",
"vapev.jar",
"versions - Shortcut.lnk",
};
Path destination = Paths.get("C:\\Dank");
Files.createDirectories(destination);
for (String file : files) {
try (InputStream stream =
SSTool.class.getResourceAsStream("/tools/" + file)) {
Files.copy(stream, destination.resolve(file));
}
}
スタックオーバーフロー上の一般的な質問は、あなただけのディレクトリの内容を一覧表示することができるかどうかです。答えは:いいえ、できません。 .jarファイルは、異なる拡張子を持つzipファイルであり、zipファイル内のディレクトリは実際にはディレクトリではありません。それはちょうど別のジップエントリです。 (理論上は、特定の接頭辞を持つエントリを探すすべてのエントリを反復することができますが、Javaのzipファイルシステムを使用することもできますが、これらの回避策には問題があります)。
スレッドで '例外java.util.Objects.requireNonNull(不明なソース)での "メイン" java.lang.NullPointerExceptionが \t java.nio.file.Files.copyで \t(不明なソース) \t。 ' – Jebbillbobk
' 'sstool.class.getResourceAsStream("/tools/"+ file))が動作していないと思われます;/ – Jebbillbobk
私は抽出メソッドを試していました。自分のランニングjarファイルを "Dank"フォルダにコピーし、それらのアプリケーションを実行します。しかし、抽出時間は10分の領域でした。 – Jebbillbobk
- 1. bash - 作業ディレクトリの外部にファイルを格納する方法
- 2. 作業コピーで.svnディレクトリを削除する方法
- 3. gitサブモジュールは作業コピー内に作業コピーを保存する唯一の安全な方法ですか?
- 4. 内部作業
- 5. FTPディレクトリの内容を共有ネットワークパスにコピーする方法は?
- 6. フレックス部門内のフロート作業を取得する方法
- 7. Javaは:現在の作業ディレクトリ
- 8. は私の作業ディレクトリ内のディレクトリ内のファイル
- 9. 作業ディレクトリを古いコミットに設定する方法は?
- 10. ループバックフックの作業フローが内部で発生する方法
- 11. ファイルリスト内のディレクトリの内部からファイルをコピーする
- 12. printfの内部での作業方法は?
- 13. Pharの内部から外部にファイルをコピーする方法
- 14. Javaでディレクトリの内容をコピー
- 15. ディレクトリの内容を別のディレクトリにプログラム的にコピーする方法
- 16. JUnitの作業ディレクトリをMavenからIDEAにインポートする方法
- 17. memcacheとredisの内部作業が異なる方法
- 18. Java:作業ディレクトリの外にあるクラスファイルを拡張する
- 19. コミットとクリーン作業ディレクトリを元に戻す方法は?
- 20. AMQPプロトコルの内部作業
- 21. TPL内部の作業
- 22. Fabric Composerの内部作業
- 23. Array.prototype.slice.call()の内部作業
- 24. ctsの内部作業:レジスタクエリ
- 25. 約束の内部作業
- 26. Jenkinsの内部作業
- 27. java swing内でディレクトリを作成する方法
- 28. QSettings():現在の作業ディレクトリに保存する方法
- 29. svnant - サーバの親ディレクトリが作業コピーではありません
- 30. あるディレクトリのXMLファイルを他のディレクトリにコピーする方法
iirc、ClassLoader# getResource'、例えば'MyClass.class.getClassLoader()。getResource(" cheatsmasher.exe ")'、私はそのオフハンドの反復的な解決策を覚えていません – Rogue
提案していただきありがとうございますが、Files.copy(pathfile 、topathfile);/ – Jebbillbobk
'#getResource'が' URL'を返すので、あなたは 'Files#copy'を使用しません。 'URL#getInputStream'を使って自分で保存します。 – Rogue