源代码如下:

package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class WinsatDiskRunner {
    public static void main(String[] args) {
        try {
            // 创建ProcessBuilder对象并设置命令及参数
            ProcessBuilder processBuilder = new ProcessBuilder("cmd.exe", "/c", "winsat disk -drive c");

            // 执行命令
            Process process = processBuilder.start();

            // 读取命令输出
            InputStream inputStream = process.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
            String line;
            boolean startReading = false; // 标志位,表示是否开始读取测速数据
            Pattern readPattern = Pattern.compile("Disk  Sequential 64.0 Read\\s+(\\d+\\.\\d+)\\s+MB/s");
            Pattern writePattern = Pattern.compile("Disk  Sequential 64.0 Write\\s+(\\d+\\.\\d+)\\s+MB/s");
            while ((line = reader.readLine()) != null) {
                if (line.contains("Disk  Sequential 64.0 Read")) {
                    Matcher matcher = readPattern.matcher(line);
                    if (matcher.find()) {
                        String readMbpsValue = matcher.group(1);
                        System.out.println(readMbpsValue);
                    }
                }
                if (line.contains("Disk  Sequential 64.0 Write")) {
                    Matcher matcher = writePattern.matcher(line);
                    if (matcher.find()) {
                        String writeMbpsValue = matcher.group(1);
                        System.out.println( writeMbpsValue);
                    }
                }
                if (line.contains("命令执行完毕")) {
                    break; // 结束循环,不再读取后续内容
                }
            }

            // 等待命令执行完成
            int exitCode = process.waitFor();
            System.out.println("命令执行完毕,退出码:" + exitCode);

            // 关闭资源
            reader.close();
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

输出结果如下:

利用windows自带的winsat工具获得硬盘顺序读写速度_System

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: windows