Лил поздний ответ, но я думал, что стоит поделиться ... Поскольку по умолчанию Java API не приходит с этой функцией на нем, вы могли бы использовать внешние библиотеки, как упоминалось выше, однако я лично счел гораздо более удобным (для Windows) иметь сторонний exe-файл в пути класса jar, извлечь его в папку temp, выполнить его при необходимости, а затем удалить его после выполнения приложения с этим. В программе третьей партии я использовал this который является только CLI программы, которая может сделать несколько трюков с подключенными устройствами, а затем использовал этот код:
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();
}
, чтобы удалить привод. Кусочки кода выше определенно не подходят для всех применений, а второй в перкуляте не самый большой, есть и другие гораздо лучшие способы сделать это, чем порождать анонимную нить ... Однако, тем не менее, у вас есть идея:
Наконец, я sugest вы сообщить пользователю надлежащим образом и попросить их ОБОГАЩЕНИЯ перед выполнением каких-либо стороннего программного обеспечения в своей машине ...
Я надеюсь, что это было полезно :-)
Не со стандартом библиотека. Вам, возможно, придется прибегать к хакерам на платформе. У вас была какая-то конкретная операционная система? – Joni
В стандартной библиотеке времени выполнения нет обычной. Вам нужно будет попросить базовую операционную систему сделать это. –
Вот несколько приложений командной строки Windows, для вызова этого вызова используйте Process.execute. http://stackoverflow.com/questions/206248/how-do-you-programmatically-eject-an-usb-mass-storage-device – Whome