Java--ProcessBuilder中的字节流

news/2024/6/16 19:43:23 标签: java, 开发语言

ProcessBuilder中的字节流

ProcessBuilder是建立一个新进程,并且能够获取环境的信息,这些信息会通过字节流的方式输入获取,接下来讨论获取字节流要进行的操作

直接获取

这种方式是直接读取InputStream的字节流

ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("ls");
Process process = processBuilder.start();
int  ret = process.waitFor();
InputStream inputStream = process.getInputStream();
StringBuffer out = new StringBuffer();
byte[] b = new byte[8192];
for (int n; (n = inputstream.read(b)) != -1; ) { //直接读取字节流
     out.append(new String(b, 0, n));
}
System.out.printf("Program exited with code: %d", ret);
System.out.println(out);

但是这种方式每次进行inputstream.read()的时候都要进行一次IO操作,这样比较消耗资源,因此放入缓存中读取

ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("ls");
Process process = processBuilder.start();
int  ret = process.waitFor();
InputStream inputStream = process.getInputStream();
BufferedInputStream bs = new BufferedInputStream(inputStream); //将数据放入缓存
StringBuffer out = new StringBuffer();
byte[] b = new byte[8192];
for (int n; (n = bs.read(b)) != -1; ) { //遍历数据
        out.append(new String(b, 0, n));
}
System.out.printf("Program exited with code: %d", ret);
System.out.println(out);

http://www.niftyadmin.cn/n/4981933.html

相关文章

OpenVINO2023使用简介

1 下载安装 先在anaconda中创建一个虚拟环境,该环境的python版本为3.7,之所以使用python3.7,是因为我在3.9上安装过程中出现不少bug,后面新建了一个3.7的环境才解决,我不知道是否由于和我已有环境中某些包不兼容&…

小红书运营 变现方法总结

大家好,我是网媒智星,今天跟大家分享一下小红书如何变现的方法。介绍四个赛道和玩法给大家参考。 想在小红书成为博主的同学们要牢记一句话:赛道的选择比流量更重要。方向错误,再怎么努力也是徒劳。小红书是近几年最值得投资的平台…

图像颜色空间转换

目录 1.图像颜色空间介绍 RGB 颜色空间 2.HSV 颜色空间 3.RGBA 颜色空间 2.图像数据类型间的互相转换convertTo() 3.不同颜色空间互相转换cvtColor() 4.Android JNI demo 1.图像颜色空间介绍 RGB 颜色空间 RGB 颜色空间是最常见的颜色表示方式之一,其中 R、…

Linux查看是虚拟机还是物理机

第一种方式:dmesg命令 [roottest ~]# dmesg | grep -i hypervisor [ 0.000000] Hypervisor detected: VMware [ 0.001000] TSC freq read from hypervisor : 2903.999 MHz [ 6.311621] [drm] Max dedicated hypervisor surface memory is 0 kiB第二种方式…

代码随想录训练营第四十八天|198.打家劫舍 、 213.打家劫舍II 、 337.打家劫舍III

198.打家劫舍 题目链接/文章讲解/视频讲解&#xff1a;代码随想录 1.代码展示 //198.打家劫舍 int rob(vector<int>& nums) {//step1 构建dp数组//本题dp[i]的含义是偷到第i 1家的最多金币数if (nums.size() 1) {return nums[0];}vector<int> dp(nums.size(…

项目:点餐系统3mysql知识回顾MySQL客户端

连接数据库 mysql -uroot -p 密码&#xff1a;空 一、第三方库&#xff1a;MySQL 数据库-存储并管理数据的仓库&#xff0c;是一个C/S架构 MySQL客户端通过sql来告诉MySQL服务器&#xff0c;自己需要做什么操作 1.sql语句 sql&#xff1a;structure query language结构化查询…

01串取反

小美定义一个 01 串的权值为&#xff1a;每次操作选择一位取反&#xff0c;使得相邻字符都不相等的最小操作次数。 例如&#xff0c;"10001"的权值是 1&#xff0c;因为只需要修改一次&#xff1a;对第三个字符取反即可。 现在小美拿到了一个 01 串&#xff0c;她希望…

人员操作行为识别监测

人员操作行为识别监测实时监测人员的操作行为&#xff0c;人员操作行为识别监测通过yolov7深度学习算法网络模型&#xff0c;对前端采集人员操作行为的图像使用算法进行分析&#xff0c;识别出不符合规范的操作行为&#xff0c;并发出告警信号以提醒相关人员。在训练之前&#…