java获取cpu(java获取cpu序列号)

华为云服务器特价优惠火热进行中!

2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。

合作流程:
1、点击链接注册/关联华为云账号:点击跳转
2、添加客服微信号:cloud7591,确定产品方案、价格方案、服务支持方案等;
3、客服协助购买,并拉微信技术服务群,享受一对一免费技术支持服务;
技术专家在金蝶、华为、腾讯原厂有多年工作经验,并已从事云计算服务8年,可对域名、备案、网站搭建、系统部署、AI人工智能、云资源规划等上云常见问题提供更专业靠谱的服务,对相应产品提供更优惠的报价和方案,欢迎咨询。

今天给各位分享java获取cpu的知识,其中也会对java获取cpu序列号进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

微信号:cloud7591
如需了解更多,欢迎添加客服微信咨询。
复制微信号

本文目录一览:

java获取cpu信息失败

关于Java:读取CPU使用率时出错:/ proc / stat(权限被拒绝)

androidandroid-studiojava

Error reading CPU usage: /proc/stat (permission denied)

附件是我在运行应用程序后出现在Android Studio中的错误消息。 我可以在设备上构建并运行程序,而不会出现任何问题。 在开始按照Google的新应用要求定位API级别26之前,我没有收到此错误。 关于如何纠正错误的任何建议? 此外,如果未解决,此错误将来还会引起问题吗?

谢谢!

相关讨论

您是否已在设备中授予存储权限?

@CopsOnRoad,是的,我已授予存储权限。 此错误来自Play商店中已使用一年以上的应用。 我只是在更新到API 26之后才收到错误。

在哪个Android版本中您会收到此错误?

使用API级别26或更高版本无法访问/ proc / stat。 Google已将其限制为非系统应用程序。 从API级别26开始,只有系统应用程序可以访问/ proc / stat

更多信息

这意味着您之前将API 23定位为目标,并且在安装期间拥有应用程序权限。 从API 23(Android 6.0)开始,您必须在运行时询问危险权限。

这就是您的应用之前成功运行的原因,当您将其更改为26时,就开始出现错误。 您必须在运行时使用ActivityCompat.requestPermissions(...)询问权限

相关讨论

谢谢,实际上,我已经在运行时请求了危险权限的权限。 我在清单文件中请求RECORD_AUDIO,WRITE_EXTERNAL_STORAGE,READ_INTERNAL_STORAGE和INTERNET的权限。 RECORD_AUDIO和WRITE_EXTERNAL _STORAGE都被认为是危险的,因此Im也需要在运行时请求许可。 但是我不适合INTERNET或READ_INTERNAL_STORAGE,因为它们并不危险。 我确实注意到READ_INTERNAL_STORAGE在Android 8.0的任何列表上都没有,这不再是权限吗? 这可能是造成问题的原因吗?

我认为READ_INTERNAL_STORAGE已由Android系统提供给您,您无需从Android 8.0开始指定它。

java怎样获取CPU占用率和硬盘占用率

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.Comparator;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class T {

private static final int DRIVE_TYPE_HARD = 3;

private static final String CHARSET = "GBK";

private static final String CAP_LOAD_PERCENTAGE = "LoadPercentage";

private static final String CAP_CAPACITY = "Capacity";

private static final String CAP_CAPTION = "Caption";

private static final String CAP_DRIVE_LETTER = "DriveLetter";

private static final String CAP_DRIVE_TYPE = "DriveType";

private static final String CAP_FREE_SPACE = "FreeSpace";

private static final ListString CAPS_VOLUME = Arrays.asList(CAP_CAPACITY,

CAP_CAPTION, CAP_DRIVE_LETTER, CAP_DRIVE_TYPE, CAP_FREE_SPACE);

private static final String CMD_CPU = "wmic cpu get " + CAP_LOAD_PERCENTAGE;

private static final String CMD_VOLUME = "wmic volume get " + CAP_CAPACITY

+ "," + CAP_CAPTION + "," + CAP_DRIVE_LETTER + "," + CAP_DRIVE_TYPE + ","

+ CAP_FREE_SPACE;

public static void main(String[] args) throws IOException {

printDiskUsages(getDiskUsages());

printCpuUsage(getCpuLoadPercentage());

}

private static void printDiskUsages(ListDiskUsage diskUsages) {

for (DiskUsage diskUsage : diskUsages) {

System.out.printf("%s占用率:%.2f%%\n", diskUsage.caption, diskUsage.usage);

}

}

private static void printCpuUsage(double cpuLoadPercentage) {

System.out.printf("CPU占用率:%.2f%%\n", cpuLoadPercentage);

}

/**

* 取得 CPU 占用率。

*

* @return

* @throws IOException

*/

private static double getCpuLoadPercentage() throws IOException {

Process process = Runtime.getRuntime().exec(CMD_CPU);

InputStream is = process.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(is, CHARSET));

br.readLine(); // 舍弃标题行

br.readLine(); // 舍弃标题行下空行

String percentageLine = br.readLine();

if (percentageLine == null) {

return 0;

}

return Double.parseDouble(percentageLine.trim());

}

/**

* 取得硬盘占用率。

*

* @return

* @throws IOException

*/

private static ListDiskUsage getDiskUsages() throws IOException {

Process process = Runtime.getRuntime().exec(CMD_VOLUME);

InputStream is = process.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(is, CHARSET));

String captionLine = br.readLine(); // 舍弃标题行

br.readLine(); // 舍弃标题行下空行

MapString, Integer captionToIndex = parseVolumeCaptionLine(captionLine);

String line;

ListDiskUsage result = new ArrayListDiskUsage();

while ((line = br.readLine()) != null) {

if (line.length() == 0) {

// 舍弃空行

continue;

}

DiskUsage diskUsage = parseVolumeLine(line, captionToIndex);

if (diskUsage != null) {

result.add(diskUsage);

}

}

Collections.sort(result, new DiskUsageComparator());

return result;

}

private static MapString, Integer parseVolumeCaptionLine(String captionLine) {

MapString, Integer captionToIndex = new HashMapString, Integer();

for (String caption : CAPS_VOLUME) {

captionToIndex.put(caption, captionLine.indexOf(caption));

}

return captionToIndex;

}

private static DiskUsage parseVolumeLine(String line,

MapString, Integer captionToIndex) {

int driveType = parseVolumeDriveType(line, captionToIndex);

if (driveType != DRIVE_TYPE_HARD) {

return null;

}

String driveLetter = parseVolumeDriveLetter(line, captionToIndex);

if (!isValidDriveLetter(driveLetter)) {

return null;

}

String caption = parseVolumeCaption(line, captionToIndex);

long capacity = parseVolumeCapacity(line, captionToIndex);

long freeSpace = parseVolumeFreeSpace(line, captionToIndex);

return new DiskUsage(caption,

((capacity - freeSpace) / (double) capacity) * 100);

}

private static boolean isValidDriveLetter(String driveLetter) {

if (driveLetter.length() != 2) {

return false;

}

return Character.isUpperCase(driveLetter.charAt(0));

}

private static int parseVolumeDriveType(String line,

MapString, Integer captionToIndex) {

String str = line.substring(captionToIndex.get(CAP_DRIVE_TYPE),

captionToIndex.get(CAP_FREE_SPACE));

return Integer.parseInt(str.trim());

}

private static String parseVolumeDriveLetter(String line,

MapString, Integer captionToIndex) {

String str = line.substring(captionToIndex.get(CAP_DRIVE_LETTER),

captionToIndex.get(CAP_DRIVE_TYPE));

return str.trim();

}

private static String parseVolumeCaption(String line,

MapString, Integer captionToIndex) {

String str = line.substring(captionToIndex.get(CAP_CAPTION),

captionToIndex.get(CAP_DRIVE_LETTER));

return str.trim();

}

private static long parseVolumeCapacity(String line,

MapString, Integer captionToIndex) {

String str = line.substring(captionToIndex.get(CAP_CAPACITY),

captionToIndex.get(CAP_CAPTION));

return Long.parseLong(str.trim());

}

private static long parseVolumeFreeSpace(String line,

MapString, Integer captionToIndex) {

String str = line.substring(captionToIndex.get(CAP_FREE_SPACE));

return Long.parseLong(str.trim());

}

private static class DiskUsageComparator implements ComparatorDiskUsage {

@Override

public int compare(DiskUsage o1, DiskUsage o2) {

return o1.caption.compareTo(o2.caption);

}

}

private static class DiskUsage {

public String caption;

public double usage;

public DiskUsage(String caption, Double usage) {

this.caption = caption;

this.usage = usage;

}

}

}

Java如何读取CPU的数据信息

java获取所有系统信息(CPU、内存、进程等)的代码:

import java.io.InputStreamReader;

import java.io.LineNumberReader;

import java.util.ArrayList;

import java.util.List;

import mytools.com.sun.management.OperatingSystemMXBean;

import mytools.java.io.File;

import mytools.java.lang.management.ManagementFactory;

/**

* 获取windows系统信息(CPU,内存,文件系统)

* @author libing

*

*/

public class WindowsInfoUtil {

private static final int CPUTIME = 500;

private static final int PERCENT = 100;

private static final int FAULTLENGTH = 10;

public static void main(String[] args) {

System.out.println(getCpuRatioForWindows());

System.out.println(getMemery());

System.out.println(getDisk());

}

//获取内存使用率

public static String getMemery(){

OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();

// 总的物理内存+虚拟内存

long totalvirtualMemory = osmxb.getTotalSwapSpaceSize();

// 剩余的物理内存

long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize();

Double compare=(Double)(1-freePhysicalMemorySize*1.0/totalvirtualMemory)*100;

String str="内存已使用:"+compare.intValue()+"%";

return str;

}

//获取文件系统使用率

public static ListString getDisk() {

// 操作系统

ListString list=new ArrayListString();

for (char c = 'A'; c = 'Z'; c++) {

String dirName = c + ":/";

File win = new File(dirName);

if(win.exists()){

long total=(long)win.getTotalSpace();

long free=(long)win.getFreeSpace();

Double compare=(Double)(1-free*1.0/total)*100;

String str=c+":盘 已使用 "+compare.intValue()+"%";

list.add(str);

}

}

return list;

}

//获得cpu使用率

public static String getCpuRatioForWindows() {

try {

String procCmd = System.getenv("windir") + "\\system32\\wbem\\wmic.exe process get Caption,CommandLine,KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";

// 取进程信息

long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd));

Thread.sleep(CPUTIME);

long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd));

if (c0 != null c1 != null) {

long idletime = c1[0] - c0[0];

long busytime = c1[1] - c0[1];

return "CPU使用率:"+Double.valueOf(PERCENT * (busytime)*1.0 / (busytime + idletime)).intValue()+"%";

} else {

return "CPU使用率:"+0+"%";

}

} catch (Exception ex) {

ex.printStackTrace();

return "CPU使用率:"+0+"%";

}

}

//读取cpu相关信息

private static long[] readCpu(final Process proc) {

long[] retn = new long[2];

try {

proc.getOutputStream().close();

InputStreamReader ir = new InputStreamReader(proc.getInputStream());

LineNumberReader input = new LineNumberReader(ir);

String line = input.readLine();

if (line == null || line.length() FAULTLENGTH) {

return null;

}

int capidx = line.indexOf("Caption");

int cmdidx = line.indexOf("CommandLine");

int rocidx = line.indexOf("ReadOperationCount");

int umtidx = line.indexOf("UserModeTime");

int kmtidx = line.indexOf("KernelModeTime");

int wocidx = line.indexOf("WriteOperationCount");

long idletime = 0;

long kneltime = 0;

long usertime = 0;

while ((line = input.readLine()) != null) {

if (line.length() wocidx) {

continue;

}

// 字段出现顺序:Caption,CommandLine,KernelModeTime,ReadOperationCount,

// ThreadCount,UserModeTime,WriteOperation

String caption =substring(line, capidx, cmdidx - 1).trim();

String cmd = substring(line, cmdidx, kmtidx - 1).trim();

if (cmd.indexOf("wmic.exe") = 0) {

continue;

}

String s1 = substring(line, kmtidx, rocidx - 1).trim();

String s2 = substring(line, umtidx, wocidx - 1).trim();

if (caption.equals("System Idle Process") || caption.equals("System")) {

if (s1.length() 0)

idletime += Long.valueOf(s1).longValue();

if (s2.length() 0)

idletime += Long.valueOf(s2).longValue();

continue;

}

if (s1.length() 0)

kneltime += Long.valueOf(s1).longValue();

if (s2.length() 0)

usertime += Long.valueOf(s2).longValue();

}

retn[0] = idletime;

retn[1] = kneltime + usertime;

return retn;

} catch (Exception ex) {

ex.printStackTrace();

} finally {

try {

proc.getInputStream().close();

} catch (Exception e) {

e.printStackTrace();

}

}

return null;

}

/**

* 由于String.subString对汉字处理存在问题(把一个汉字视为一个字节),因此在 包含汉字的字符串时存在隐患,现调整如下:

* @param src 要截取的字符串

* @param start_idx 开始坐标(包括该坐标)

* @param end_idx 截止坐标(包括该坐标)

* @return

*/

private static String substring(String src, int start_idx, int end_idx) {

byte[] b = src.getBytes();

String tgt = "";

for (int i = start_idx; i = end_idx; i++) {

tgt += (char) b[i];

}

return tgt;

}

}

java如何获取系统内存、cpu等信息。

亲.java的目录下有一个demo文件夹,里面有很多范例,其中就有读取cpu信息,望采纳点赞谢谢

Java如何获取CPU标识符

可尝试通过System.getProperties() 这类API获取:

System.getProperty("os.arch") -- cpu架构 ,如x86

os.name --如Windows XP

os.version -- 操作系统版本号

如果还无法满足,可以根据系统的不同,利用Runtime入口去执行命令来获取,比如:

linux 下 可以执行如:

Runtime.getRuntime().exec("cat /proc/cpuinfo |grep vender_id");

之类的语句进行获取

关于java获取cpu和java获取cpu序列号的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

发布于 2023-04-04 07:04:34
收藏
分享
海报
28
目录

    忘记密码?

    图形验证码

    复制成功
    微信号: cloud7591
    如需了解更多,欢迎添加客服微信咨询。
    我知道了