【项目实战】SpringBoot整合Oshi实现访问计算机硬件和操作系统信息

一、Oshi入门介绍

本项目主要使用第开源jar包:https://github.com/oshi/oshi

Oshi是一个免费且开源的Java库,提供了一种访问计算机硬件和操作系统信息的方式。
Oshi是一个跨平台的Java库,提供了获取操作系统信息(比如CPU、内存、磁盘)的API。
Oshi支持多种操作系统,包括Windows、Linux、macOS和Solaris。
Oshi可以在Windows、Linux、MacOS等多种操作系统上获取系统信息,支持x86、x86_64、ARM等多种架构。

二、Oshi能获取到的信息汇总

Java可以通过Oshi获取系统和硬件信息,方便地获取各种系统信息

  • CPU信息:CPU核心数、CPU占用率、CPU型号等。
  • 内存信息:总内存大小、可用内存大小、内存使用率等。
  • 磁盘信息:磁盘总大小、已使用磁盘大小、磁盘读写速度等。
  • 网络信息:网络带宽、网络流量等。

三 、Oshi如何使用?

要在Java项目中使用Oshi,Oshi提供了一系列API可以获取以上信息,您可以将以下依赖项添加到pom.xml文件中:

<dependency><groupId>com.github.oshigroupId><artifactId>oshi-coreartifactId><version>5.7.4version>
dependency>

添加依赖项后,您可以使用Oshi访问计算机的硬件和操作系统信息。

3.1 使用场景1:获取有关操作系统的信息

使用SystemInfo类获取有关操作系统的信息, 例如版本和架构:

import oshi.SystemInfo;public class Example {public static void main(String[] args) {SystemInfo systemInfo = new SystemInfo();System.out.println("操作系统: " + systemInfo.getOperatingSystem().getVersion());System.out.println("架构: " + systemInfo.getHardware().getProcessor().getArch());}
}

3.2 使用场景2:获取有关硬件的信息

例如CPU、内存和磁盘。
例如,您可以使用HardwareAbstractionLayer类获取有关CPU的信息:

import oshi.SystemInfo;public class Example {public static void main(String[] args) {SystemInfo systemInfo = new SystemInfo();System.out.println("CPU: " + systemInfo.getHardware().getProcessor().getName());System.out.println("物理核心数: " + systemInfo.getHardware().getProcessor().getPhysicalProcessorCount());System.out.println("逻辑核心数: " + systemInfo.getHardware().getProcessor().getLogicalProcessorCount());}
}

3.3 使用场景3:获取CPU信息

import oshi.SystemInfo;
import oshi.hardware.CentralProcessor;SystemInfo systemInfo = new SystemInfo();
CentralProcessor processor = systemInfo.getHardware().getProcessor();
int logicalProcessorCount = processor.getLogicalProcessorCount();
String cpuModel = processor.getProcessorIdentifier().getName();
double systemCpuLoad = processor.getSystemCpuLoad();

3.4 使用场景4:获取内存信息

import oshi.SystemInfo;
import oshi.hardware.GlobalMemory;SystemInfo systemInfo = new SystemInfo();
GlobalMemory memory = systemInfo.getHardware().getMemory();
long totalMemorySize = memory.getTotal();
long availableMemorySize = memory.getAvailable();
double memoryUsage = (totalMemorySize - availableMemorySize) * 100.0 / totalMemorySize;

3.5 使用场景5:获取磁盘信息

import oshi.SystemInfo;
import oshi.hardware.HardwareAbstractionLayer;
import oshi.software.os.FileSystem;
import oshi.software.os.OSFileStore;SystemInfo systemInfo = new SystemInfo();
HardwareAbstractionLayer hal = systemInfo.getHardware();
FileSystem fileSystem = systemInfo.getOperatingSystem().getFileSystem();
OSFileStore[] fileStores = fileSystem.getFileStores();
for (OSFileStore store : fileStores) {long totalSpace = store.getTotalSpace();long usableSpace = store.getUsableSpace();double usage = (totalSpace - usableSpace) * 100.0 / totalSpace;
}

3.6 使用场景6:获取网络信息

import oshi.SystemInfo;
import oshi.hardware.NetworkIF;SystemInfo systemInfo = new SystemInfo();
NetworkIF[] networkIFs = systemInfo.getHardware().getNetworkIFs();
for (NetworkIF networkIF : networkIFs) {String name = networkIF.getName();long receiveBytes = networkIF.getBytesRecv();long transmitBytes = networkIF.getBytesSent();
}

三 、参考链接

https://www.cnblogs.com/songxingzhu/p/9107878.html
https://blog.csdn.net/qq_41609208/article/details/105856260


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部