技术标签: java执行cmd命令超时
需要注意的有两点:
* 必须处理InputStream和ErrorStream,否则主线程会阻塞。这里我用了SequenceInputStream合并两条输入流。
* 字节流转字符流时要指定正确的编码,否则会乱码。
直接上代码了:
import org.junit.Test;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/**
* 命令行辅助工具
* @author jzhung
*/
public class Commander {
@Test
public void test() {
List cmds = new ArrayList<>();
cmds.add("ping 127.0.0.1");
cmds.add("ipconfig /all");
cmds.add("adb devices");
cmds.add("adb shell ls /system");
cmds.add("adb shell pm list packages");
try {
for (int i = 0; i < cmds.size(); i++) {
execute(cmds.get(i));
System.out.println("-----------------------------------------------------");
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void execute(String cmd) throws IOException {
Process process = Runtime.getRuntime().exec(cmd);
InputStream inStream = process.getInputStream();
InputStream errStream = process.getErrorStream();
SequenceInputStream sequenceIs = new SequenceInputStream(inStream, errStream);
BufferedInputStream bufStream = new BufferedInputStream(sequenceIs);
Reader reader = new InputStreamReader(bufStream, getDefaultEncoding());
BufferedReader bufReader = new BufferedReader(reader);
String line;
while ((line = bufReader.readLine()) != null) {
System.out.println(line);
}
inStream.close();
errStream.close();
process.destroy();
}
public static String getDefaultEncoding() {
if (getOS().trim().toLowerCase().startsWith("win")) {
return "GBK";
} else {
return "UTF-8";
}
}
public static String getOS() {
String os = System.getProperty("os.name");
System.out.println(os);
return os;
}
}
文章浏览阅读163次。Regular Expression Extractor是JMeter中的另一个概念—Post-processor,它的作用是得到HTTP响应后,对结果(比如一个html标签页面的内容或json输出数据等)进行处理,通过regular expression抽取字符值,存成一个变量给后面的Sampler使用。例如在Click Table(afterSelectTable_ajax..._groovy获取regular expression extractor
文章浏览阅读2w次,点赞7次,收藏28次。BSD内核:TCP_CONNECTIONTIMEOUTlinux内核:TCP_SYNCNT
文章浏览阅读7.5k次,点赞3次,收藏11次。_globalaveragepooling1d
文章浏览阅读1.8k次。算术运算符、赋值运算符和关系运算符的优先级是什么?_后端开发优先级排序为:算术运算符 > 关系运算符 > 赋值运算。算术运算符有*、/、%、+、-;关系运算符有、<=、>= 、==、!=;赋值运算符有=、+=、-=、*=、/=、%=、>>=、<<=、&=、|=、^=。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言..._c语言开发后端
文章浏览阅读834次。文章目录序正文开始引入threeJs材料收集实现原理实现步骤基础的全景完成完整Vue代码总结序在web的前端发展过程中,对于视觉化的要求已经越来越高有关于VR全景的效果也同样可以在网页中实现了,不用戴上VR设备,你也可以在网页上体会一把“身临其境”的感觉全景视觉之前的我ThreeJS系列博客中也曾经写过一篇关于如何制作全景效果的文章,不过只有上半部分的素材采集**(虽然这很重要)**这是我ThreeJs系列地址,如果对页面3D感兴趣的同学可以过去学习:https:_js vr全景看车
文章浏览阅读3.8k次,点赞19次,收藏5次。 字符串是Redis五种基本数据类型中的基础。同时也是我们在学习编程中接触最多的一种数据类型。本文将从使用、源码、编码三个部分讲解此数据类型在Redis中的使用。字符串 string是Redis中最简单的数据结构。Redis中所有的数据结构都是以唯一的key字符串作为名称,根据此key获取value,差异仅在于value的数据结构不同。string使用非常广泛,最常_redisson list中取出的对象是字符串
文章浏览阅读1.1k次。本次通过loadrunner录制Sql Server介绍一下如何测试一个sql语句或存储过程的执行性能。主要分如下几个步骤完成: 第一步、测试准备第二步、配置ODBC数据源第三步、录制SQL语句在Sql Server查询分析器中的运行过程 第四步、优化录制脚本,设置事务 第五步、改变查询数量级查看SQL语句的性能第六步、在controller中运行脚本_loadrunner odbc性能
文章浏览阅读1k次。异常情况:使用 flutter doctor 可以识别手机设备,但是 Adroid Studio 不识别。解决:使用命令行,设置 Flutter 配置下的 Android Sdk 目录。flutter config --android-sdk /yourAndroidSDKLocation或者在 AS 界面 Flile -&gt; Project Structour 下设置 P..._yourandroidsdklocation
文章浏览阅读1.6k次。常见前端UI框架1.Layui官方网址:http://www.layui.com/Layui是一款采用自身模块规范编写的国产前端UI框架,遵循原生HTML/CSS/JS的书写与组织形式,门槛极低,拿来即用。从核心代码到API的每一处细节都经过精心雕琢,非常适合界面的快速开发。,从核心代码到API的每一处细节都经过精心雕琢,非常适合界面的快速开发。Layui还很年轻,首个版本发布于20..._h+ui layui easyui
文章浏览阅读1.7k次。1.只有for循环时for (var i = 0; i < 5; i++) {console.log(i);}运行结果为0,1,2,3,4 ,这是大家都知道的2.在for循环中添加setTimeoutfor (var i = 0; i < 5; i++) { setTimeout(function () { console.log(i); },i*1000);_settimeout for循环
文章浏览阅读211次。1 定义适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。适配器模式的好处是,客户不必为了应对不同的接口而每次都跟着改变,只需要将接口转换的部分通过适配器封装起来就可以了。2 类图Client:客户端,接口调用方。Target:目标接口,客户端所期望使用的接口,也是适配器所要适配的接口。Adaptee:被适配者,系统原有的实现。A..._适配器模式 钱转为游戏币
文章浏览阅读2.8k次,点赞2次,收藏20次。我们将编写一个程序,它将会自动下载GitHub网站上星星最多的python项目的信息,并对这些信息简单可视化。_根据api展示数据