首页 > 系统相关 >利用windows自带的winsat工具获得硬盘顺序读写速度

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

时间:2023-10-28 17:03:19浏览次数:36  
标签:winsat java windows matcher 读写 Sequential Pattern import line

源代码如下:

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工具获得硬盘顺序读写速度_Code

标签:winsat,java,windows,matcher,读写,Sequential,Pattern,import,line
From: https://blog.51cto.com/u_16328460/8072237

相关文章

  • Windows编译PDF库:libharu
    libharu编译需要libpng,libpng依赖zlib,所以需要下载这三个库libharu下载:http://libharu.org/libpng下载:http://www.libpng.org/pub/png/libpng.htmlzlib下载:https://www.zlib.net/ *:libpng我下载的版本是V1.6.40,对应的zlib版本需要在V1.0.4以上,我用的zlibV1.3参考链接:ht......
  • Windows 常用快捷键
    tab空两格ctrl+c复制ctrl+v粘贴ctrl+a全选ctrl+x剪切ctrl+z撤销ctrl+y反撤销短暂性删除:选中+delet长久性删除:选中+shift+deletwindoes+r运行windows+e我的电脑任务管理器:①桌面最下方点鼠标右键②ctrl+shift+escwindow+tab切换应用程序 ......
  • Windows 文件夹权限不足——夺权
    由于Windows有着大家都不怎么使用的多用户权限管理机制,有的时候在一些特殊文件夹无法使用默认权限进行操作,本文以安装在C:\ProgramData的Miniconda3为例。主要有两种方法:将文件夹所有者改为自己给自己添加完全控制权限TIPS操作文件夹时,如果文件夹中间有特殊字符或空格......
  • 实用小脚本——Windows系统使用dos命令删除文件
    @echooff&color0aset/pff=输入文件名:title查找%ff%echo.&set/p=正在查找<nulfor%%iin(cdefgh)do(ifexist%%i:\ (cd/d%%i:\set/p=%%i:<nulfor/f "delims="%%jin('dir/b/a-d/s"%ff%"2^>nul')do(echo.&......
  • 在Windows和Linux终端下使用代理的方式
    背景在快乐上网的时候,网页会经过代理,但是有些在终端运行的程序不一定会经过代理,比如用gitclonegithub仓库的时候,或者curl下载githubrelease的时候,如果不走代理,下载可能会很慢很慢。Windows在执行gitclone前,在终端执行sethttps_proxy=localhost:7890sethttp_proxy=loca......
  • shardingdb:支持分片和并发读写的 GoLevelDB
    概述shardingdb是一个开源包,旨在为GoLevelDB增加分片和并发读写功能。它可以作为LevelDB的替代品,方便地集成到现有项目中。本博客将介绍shardingdb及其功能,并介绍如何在您的项目中使用它。特点-分片支持:shardingdb使您能够将数据分布在多个LevelDB实例中,提高性能和可扩......
  • Azure DevOps 发布.Net项目到Windows IIS站点之pubxml
    通过VS中我们配置的pubxml进行发布trigger:-masterpool:vmImage:'windows-2022'variables:-group:GeexPublish-name:my-user-variablevalue:$[variables.UserName]#usesruntimeexpression-name:my-passed-variablevalue:$[variables.PassWord]......
  • C#winform软件实现一次编译,跨平台windows和linux兼容运行,兼容Visual Studio原生界面Fo
    一、背景:微软的.netcore开发工具,目前来看,winform界面软件还没有打算要支持linux系统下运行的意思,要想让c#桌面软件在linux系统上运行,开发起来还比较麻烦。微软只让c#的控制台软件支持在linux运行。二、解决方案:我想到的一个方案是自定义封装软件的System.Windows.Forms组件,把......
  • Anaconda在Windows上安装后终端指令不生效
    查看环境变量是否已经配置好;环境变量配置好应该是"Scripts"文件夹作为conda指令的根目录而不是别的,例如,我的环境变量配置路径如下:C:\Users\ezhar\anaconda3\Scripts......
  • mysql5.7启用ssl连接(windows版本)
    环境:OS:windows2012Mysql:5.7.29 1.安装mysql安装步骤省略,mysql5.7默认安装都已经安装好了ssl的,并默认启用了的.证书在数据目录下 D:\mysql57\dataD:\mysql57\data>dir驱动器D中的卷是新加卷卷的序列号是7603-6C5BD:\mysql57\data>dir*.pem驱动器D中的......