Java--ProcessBuilder中的字节流

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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值