Как я могу получить уникальный идентификатор жесткого диска, используя Java + JNI в Linux, Windows и Mac - PullRequest
0 голосов
/ 07 августа 2009

Как я могу получить уникальный идентификатор жесткого диска, используя Java + JNI в Linux, Windows и Mac?

Ответы [ 5 ]

3 голосов
/ 07 августа 2009

Подводя итог: вы не можете сделать это только с помощью Java

1 голос
/ 07 августа 2009

Я не думаю, что есть простой, унифицированный способ сделать это.

Однако вы можете создать отдельную логику для всех случаев; в Linux вы можете проверить / proc (используя пакет java.io). Возможно, в OS X и Windows есть похожие способы, или, если нет, вы можете выполнить сценарий оболочки или командный файл в этих системах и проанализировать вывод.

Или вы можете использовать JNI, хотя это будет означать создание вашего модуля для всех сред.

0 голосов
/ 07 августа 2009

Вы можете использовать Java + JNA (https://github.com/twall/jna/),, но тогда вам придется выяснить, как собрать эту информацию, используя собственные библиотеки на каждой из платформ, которые вы хотели бы поддерживать.

Преимущество заключается в том, что вам не нужно будет компилировать код C / C ++ для каждой из платформ. Если вы решите воспользоваться этой опцией, кто-то другой сможет рассказать вам, как определить идентификаторы жесткого диска на разных платформах, используя код / ​​библиотеки C / C ++.

AFAIK, в Linux вам нужно что-то прочитать из / proc или / sys, в Windows я бы посмотрел MSDN и увидел, что вы можете найти, что можно использовать в Visual Studio (C ++) и для Mac, кто-то другой должен был бы заполнить in. Solaris / BSD, вероятно, тоже должен поддерживаться, если вы делаете это правильно. На самом деле, для большинства POSIX-совместимых операционных систем, я думаю, вы сможете сделать это несколько равномерно.

0 голосов
/ 07 августа 2009

Я могу ошибаться, имхо, этого нельзя сделать без использования JNI.

Создайте свое приложение из двух частей

  1. Собственный компонент, который будет использовать сценарий / приложение для запроса оборудования и вывода в файл.
  2. Ваше Java-приложение для чтения из файла и выполнения любых действий.
0 голосов
/ 07 августа 2009

Как уже указывалось, вы не можете в рамках вопроса. Однако вы можете сделать это с помощью комбинации Java и собственного кода, специфичного для каждой платформы, через уровень JNI.

...