Перечисление подключенных DVD-дисков в Linux / Java / Scala

В моем приложении Scala (работает поверх Java) я хотел бы получить список всех дисков, содержащих носители DVD, например, что-то вроде этого:

  • / dev / scd0 Star Trek DS9 DVD1
  • / dev / scd0 4400 DVD1

Не уверен, что можно получить имя диска, но путь для меня все равно важен.

Я предпочел бы чистое решение Java / Scala (используя файл file.io). Если это невозможно, доступ к правым файлам Linux тоже прекрасен (например, / proc / something).

Заранее спасибо!

java,linux,scala,dvd,

1

Ответов: 2


1 принят

Я думаю, вам не повезло с java.io. *, но если вы не возражаете делать вызовы в командах Linux, вы можете собрать данные:

  1. Вызов «монтирования» и захват первого столбца вывода.
  2. Вызов «volname» для каждого значения, которое вы сделали с шага 1.

Согласно странице man для volname, он только возвращает данные для файловых систем ISO-9660 (например, DVD-диски), поэтому любой путь к устройству, который возвращает пустой, можно игнорировать.


0

Существует одна (непроверенная) возможность получить ваши диски с чистым Java-кодом. По крайней мере, в Windows.

Он немного взломан и не работает под Linux (потому что linux получает не столько интеграционную любовь от солнца, как я считаю).

import javax.swing._
import javax.swing.filechooser._
val chooser = new JFileChooser()
val view = chooser.getFileSystemView()

Кластер FileSystemView предоставляет несколько функций, таких как запрос возможных корней, если они являются диском (isDrive ()). Swing использует это для представления выбора файла с нужными значками, чтобы он работал под окнами, потому что IIRC показывает правильные символы там. Под Linux он, к сожалению, показывает только «/» root.

Одна из причин, почему это не работает в Linux, может заключаться в том, что разработчики Linux постоянно меняют свой предпочтительный способ представления такой информации в пользовательском пространстве. на данный момент это IIRC hal и dbus. Возможно, SUN не захотели публиковать новую версию java каждый раз, когда это изменяется.

Если чистая java не режет, возможно, вы можете использовать немного jni (что не так сложно использовать, если вы используете такие инструменты, как JNA или такие), чтобы напрямую обращаться к linux apis. Я не сделал этого, но мог бы попробовать, если вы заинтересованы.

Java, Linux, Scala, DVD,
Похожие вопросы