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

相关文章
相关标签/搜索