2 u014353911 u014353911 于 2017.09.19 17:59 提问

java,如何获取硬盘分区信息

java,如何获取硬盘分区信息,包括服务器所有硬盘信息,以及硬盘分区信息,包含当前磁盘总空间和可用空间。谢谢

6个回答

Small_Mouse0
Small_Mouse0   Ds   Rxr 2017.09.19 20:46
已采纳

我在windows,本机下亲测可行,题主可以试试,看下图:

 package xunlei;


import java.io.File;
import java.text.DecimalFormat;

/**
 * Created by zsl on 2017/9/19.
 */
public class Main {


    public static void main(String[] args) {
        File[] roots = File.listRoots();// 获取磁盘分区列表
        for (File file : roots) {
            System.out.println(file.getPath() + "信息如下:");
            long free = file.getFreeSpace();
            long total = file.getTotalSpace();
            long use = total - free;
            System.out.println("空闲未使用 = " + change(free) + "G");// 空闲空间
            System.out.println("已经使用 = " + change(use) + "G");// 可用空间
            System.out.println("总容量 = " + change(total) + "G");// 总空间
            System.out.println("使用百分比 = " + bfb(use, total));
            System.out.println();
        }
    }

    public static long change(long num) {
        // return num;
        return num / 1024 / 1024 / 1024;
    }

    public static String bfb(Object num1, Object num2) {
        double val1 = Double.valueOf(num1.toString());
        double val2 = Double.valueOf(num2.toString());
        if (val2 == 0) {
            return "0.0%";
        } else {
            DecimalFormat df = new DecimalFormat("#0.00");
            return df.format(val1 / val2 * 100) + "%";
        }
    }
}

图片说明

caozhy
caozhy   Ds   Rxr 2017.09.20 00:04
 import java.io.File;
import java.text.DecimalFormat;

public class Ypxx {
    public static void main(String[] args) {
        File[] roots = File.listRoots();// 获取磁盘分区列表
        for (File file : roots) {
            System.out.println(file.getPath() + "信息如下:");
            long free = file.getFreeSpace();
            long total = file.getTotalSpace();
            long use = total - free;
            System.out.println("空闲未使用 = " + change(free) + "G");// 空闲空间
            System.out.println("已经使用 = " + change(use) + "G");// 可用空间
            System.out.println("总容量 = " + change(total) + "G");// 总空间
            System.out.println("使用百分比 = " + bfb(use, total));
            System.out.println();
        }
    }

    public static long change(long num) {
        // return num;
        return num / 1024 / 1024 / 1024;
    }

    public static String bfb(Object num1, Object num2) {
        double val1 = Double.valueOf(num1.toString());
        double val2 = Double.valueOf(num2.toString());
        if (val2 == 0) {
            return "0.0%";
        } else {
            DecimalFormat df = new DecimalFormat("#0.00");
            return df.format(val1 / val2 * 100) + "%";
        }
    }
}

caozhy
caozhy   Ds   Rxr 2017.09.20 00:04
yushiyoufight
yushiyoufight   Rxr 2017.09.20 09:12

建议使用sigar

qq_33727653
qq_33727653   2017.09.20 09:27

这。。。代码随便一搜,一片片的都不用自己写!!!!!

当然还是建议用Sigar:(代码也很容易搜到)

Sigar API 提供一个方便的接口来收集系统信息,如:

◆系统内存,页面交换,cpu,平均负载,运行时间,登录信息

◆每个进程占用的内存,cpu,帐号信息,状态,参数,环境,打开的文件

◆文件系统探测和度量

◆网络接口探测,配置信息和度量

◆网络路由和连接表

kuaitongkeji
kuaitongkeji   2017.09.20 11:27

实在不行可以使用c++来获取,然后回调返回需要查找的内容

Csdn user default icon
上传中...
上传图片
插入图片