0

リムーバブル ドライブで実行するように設計された Java アプリケーションがあります。USB Disk Ejectorが許可するように、プログラムが実行されているドライブをユーザーが安全に取り外せるようにするボタンを追加したいと思います。ただし、プログラムがドライブから実行されている場合、ドライブを取り出すことができないため、これを (コード的に) 達成する方法がわかりません。このプログラムがオープン ソースであることは知っていますが、探しているコードがどこにあるのかわかりません。また、私が学んだ言語で書かれていません。

したがって、誰かが私の Java アプリケーションでこの機能を実現する方法を考え出すのを手伝ってくれたら、とてもありがたいです。明らかに、単にコピーしたくはありませんが、現時点でわかっている唯一のことは、取り出したいドライブ上にないある種の一時スクリプトに制御を渡す必要があるということです。

前もって感謝します

4

2 に答える 2

0

別のドライブからアプリケーションを実行する必要があることは間違いありません。Java Web Start CD インストールガイドに従います。このガイドは、CDの場合と同様に、USB ドライブやその他のメディアでも同様に機能するはずです。

アプリケーションを Java Web Start アプリケーションにする必要があります。実際は思ったよりずっと簡単です。.jar を変更する必要はありません。拡張子が .jnlp の小さな XML ファイルを作成し、.jar ファイルの隣に配置するだけです。Java Web Start と JNLP ファイルに関する情報は、チュートリアルとそのページの下部にあるリンクにあります。

安全な削除を実行する外部実行可能ファイルは、アプリケーションの .jar ファイルに含めることができます。実行するために、.jar から一時ファイルにコピーできます。

Path safeRemovalProgram = Files.createTempFile(null, ".exe");
try (InputStream stream =
        MyApp.class.getResourceAsStream("saferemoval.exe")) {
    Files.copy(stream, safeRemovalProgram,
        StandardCopyOption.REPLACE_EXISTING);
}
safeRemovalProgram.toFile().setExecutable(true);

ProcessBuilder builder =
    new ProcessBuilder(safeRemovalProgram.toString());
builder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
Process safeRemovalProcess = builder.start();
于 2013-10-12T21:45:52.133 に答える