Перечисление подключенных DVD-дисков в Linux / Java / Scala - PullRequest
1 голос
/ 23 апреля 2009

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 24 апреля 2009

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

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

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

0 голосов
/ 17 июня 2009

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

Он немного хакерский и не работает под linux (потому что linux не так сильно любит интеграцию от Sun).

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...