Серийный номер производителя USB-накопителя

Как я могу получить серийный номер производителя USB-накопителя в java?

я смотрю на это

Как получить серийный номер производителя USB-накопителя водить?

но мне это не помогает.


person user3684431    schedule 16.08.2014    source источник
comment
В Windows вы можете использовать Files.getFileStore(path).getAttribute("volume:vsn"). Я не знаю, как получить его в других операционных системах.   -  person VGR    schedule 17.08.2014


Ответы (2)


Я не думаю, что для этого существует чистое Java-решение, которое работает на нескольких платформах.

Возможно, вам придется прибегнуть к «очистке» вывода внешней команды. (Или выяснить, что они делают, и воспроизвести это в собственной библиотеке кода...)

В Linux:

  • Вывод команды «lsusb» включает серийный номер. (Проверьте ввод вручную.)

В Windows:


@FoggyDay нашел пару сторонних библиотек, которые предположительно поддерживают это:

  • jUSB, очевидно, доступен только для GNU/Linux.

  • usb4java поддерживает более широкий спектр платформ.

  • Оба зависят от собственных библиотек платформы.


Комментарий, предлагающий использовать Files.getFileStore(path).getAttribute("volume:vsn"), я думаю, некорректен. Исходный код Java подразумевает, что он возвращает серийный номер тома, назначенный Windows, а не серийный номер, предоставленный производителем. Соответствующий код: здесь.

person Stephen C    schedule 17.08.2014

Библиотека jUSB позволяет читать это с usb.core.Configuration.

usb4java — другая, более новая библиотека Java — вероятно, также поддерживает то же самое.

person FoggyDay    schedule 17.08.2014
comment
Согласно документации, для jUSB требуется GNU/Linux. Для библиотеки usb4java требуется порт родной библиотеки libusb, которая, по-видимому, доступна для ряда платформ. - person Stephen C; 17.08.2014