java如何獲取hdd序列號

在java裏頭如何獲取硬盤的序列號呢,這裏涉及了跨平臺的問題,不一樣的操做系統的查看命令不同,那麼java裏頭如何去適配呢。這裏使用了oshi這個項目來獲取。java

oshi

全稱是Native Operating System and Hardware Information。使用的是jna的方式而不是jni的形式來進行本地調用的。git

  • jni
    JNI(Java Native Interface)是Java語言自己提供的調用本地已編譯的函數庫的方法,自己具備跨平臺性,能夠在不一樣的機器上調用不一樣的本地庫。使用JNI調用.dll/.so共享類庫咱們首先須要另外使用C語言寫一個.dll/.so共享庫,使用SUN規定的數據結構替代C語言的數據結構,調用已有的dll/so中公佈的函數。而後再在Java中載入這個適配器dll/so,再編寫Java native函數做爲dll中函數的代理。通過2個繁瑣的步驟才能在Java中調用本地代碼。github

  • jna
    JNA(Java Native Access)框架是一個開源的Java框架,是SUN公司主導開發的,創建在經典的JNI的基礎之上的一個框架。使用JNA,不須要再編寫適配用的.dll/.so,只須要在Java中編寫一個接口和一些代碼,做爲.dll/.so的代理,就能夠在Java程序中調用dll/so。數據結構

maven

<dependency>
            <groupId>com.github.oshi</groupId>
            <artifactId>oshi-core</artifactId>
            <version>3.4.3</version>
        </dependency>

獲取方法

SystemInfo si = new SystemInfo();
        HardwareAbstractionLayer hal = si.getHardware();
        HWDiskStore[] stores = hal.getDiskStores();
        Arrays.stream(stores).forEach(e -> {
            System.out.println(e.getName() + ":" + e.getSerial());
        });

doc

相關文章
相關標籤/搜索