私は[今] USBドライブをイジェクトするために私のJavaプログラムを書くための方法があるならば、私はいくつかの検索を行なったし、次の質問見つかった不思議:、応答なしで、それが6年前に頼まれたHow Do I Eject a Volume in Java?JavaでUSBドライブを取り出すプログラムの書き方は?
をそれを今できる方法はありますか?
Windowsでのみ行う必要があります.Macで動作するものがあればプラスになります。
私は[今] USBドライブをイジェクトするために私のJavaプログラムを書くための方法があるならば、私はいくつかの検索を行なったし、次の質問見つかった不思議:、応答なしで、それが6年前に頼まれたHow Do I Eject a Volume in Java?JavaでUSBドライブを取り出すプログラムの書き方は?
をそれを今できる方法はありますか?
Windowsでのみ行う必要があります.Macで動作するものがあればプラスになります。
litle後半応答コマンドが、私はあなたが使用することができ、デフォルトのJava APIがそれにこの機能が付属していないので、それは ...共有する価値があったと思いましたしかし、上記のような外部ライブラリは、私は個人的には、はるかに便利(窓のための)は、瓶のクラスパスに第三者のexeファイルを持っていることがわかった一時フォルダで抽出し、必要なときに実行し、それと。 は、サードパーティ製のプログラムとして、私は、接続されたデバイスでいくつかのトリックを行うことができますCLI唯一のプログラムであるthisを使用して、このコードを使用:
FileUtils.copyInputStreamToFile(MyClass.class.getClassLoader().getResourceAsStream(program),TEMP_EJECT_PROGRAM);
、ApacheIOを使用して(一時ファイルの場所にエクスポートしますあなたはそれなしで確実に行うことができます)、およびこのコード:
private void safelyRemoveDrive(final String driveLetter) {
new Thread(new Runnable() {
public void run() {
if (TEMP_EJECT_PROGRAM.exists()) {
System.out.println("Removing " + driveLetter);
try {
Process p = Runtime.getRuntime()
.exec("\"" + TEMP_EJECT_PROGRAM.toString() + "\" " + driveLetter + " -L");
p.waitFor();
Scanner s = new Scanner(p.getInputStream());
while (s.hasNextLine())
System.out.println(s.nextLine());
s.close();
System.out.println("Removed " + driveLetter + ".");
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
ドライブを取り外すことができます。上記のコードはすべてのアプリケーションには必ずしも適していませんし、perticularの2番目のスレッドは最大ではありません。匿名スレッドを生成するよりももっと優れた方法があります。
最後には、私はあなたが適切にユーザーに通知し、自分のマシンで任意のサードパーティ製のソフトウェアを実行する前に、そのコンセントを求めるsugest ...
私はこれが標準と便利:-)
はなかった願っていますとしょうかん。プラットフォーム固有のハックに頼る必要があるかもしれません。特定のオペレーティングシステムを念頭に置いていましたか? – Joni
標準ランタイムライブラリにルーチンはありません。そのためには、基礎となるオペレーティングシステムに依頼する必要があります。 –
ここにはWindowsコマンドラインアプリケーションがいくつかありますが、Process.executeを使用してアプリケーションを呼び出します。 http://stackoverflow.com/questions/206248/how-do-you-programmatically-eject-an-usb-mass-storage-device – Whome