java获取linux磁盘信息_怎么用java代码读取linux主机的磁盘使用信息,同时截取出文件系统和已使用状况 放在map中可以得到keyvalu...
时间: 2024-03-08 10:47:41 浏览: 14
可以使用Java的ProcessBuilder类来执行Linux系统命令,然后通过解析命令的输出来获取磁盘信息。
以下是一个简单的示例代码,可以获取Linux系统的磁盘使用情况,并将其放入Map中:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class DiskUsage {
public static void main(String[] args) throws IOException {
Map<String, Double> diskUsageMap = getDiskUsage();
System.out.println(diskUsageMap);
}
public static Map<String, Double> getDiskUsage() throws IOException {
Map<String, Double> diskUsageMap = new HashMap<>();
ProcessBuilder builder = new ProcessBuilder("df", "-h");
Process process = builder.start();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String line = null;
while ((line = reader.readLine()) != null) {
// 解析命令输出,获取文件系统和已使用情况
if (line.startsWith("/dev/")) {
String[] tokens = line.split("\\s+");
String filesystem = tokens[0];
double used = parseSize(tokens[2]);
diskUsageMap.put(filesystem, used);
}
}
}
return diskUsageMap;
}
private static double parseSize(String sizeString) {
double size = Double.parseDouble(sizeString.substring(0, sizeString.length() - 1));
char suffix = sizeString.charAt(sizeString.length() - 1);
switch (suffix) {
case 'G':
size *= 1024;
case 'M':
size *= 1024;
case 'K':
size *= 1024;
}
return size;
}
}
```
该代码使用`ProcessBuilder`类执行`df -h`命令来获取磁盘使用情况。然后,它解析命令的输出并将文件系统和已使用情况放入Map中。其中,`parseSize`方法用于将文件大小转换为字节数。