Java实现获取命令行中的指定数据
构造一个ping的命令类
这个类中可以设置需要ping的目标域名
类提供方法public void exec();
方法执行完毕后可以读取ping的次数,ping的成功回应包个数
ping的丢包个数,ping的丢包率
最大的ping值,最小ping值,平均ping值
ExecPing ep=new ExecPing("www.baidu.com","-n","100");
ep.exec();
ep.getLostPer();
ep.getLostNum();
eo.getMaxPingVal();
eo.getMinPingVal();
主方法中可以输入:www.baidu.com ,也可以输入:www.baidu.com","-n","100",所以在功能类中定义了一个一参构造和多参构造,如果是一参则设置默认发送4次,如果是多参则将参数转为整形赋给sentNum变量,执行过程主要使用Runtime,将执行结果赋给process,并使用语句new BufferedReader(new InputStreamReader(p.getInputStream()));创建一个对象后使用循环依次取出。之后通过字符串的indexOf、subString,方法后使用spilt对字符串进行分割,之后存入数组,取数组第一个元素即可。其余功能类似。
package day14_1; import java.io.BufferedReader;
import java.io.InputStreamReader; public class ExecPing { private int sentNum;
private int receiveNum;
private int lostPer;
private int lostNum;
private int maxPingVal;
private int minPingVal;
private String cmdStr; public ExecPing() {
} /**
* 一参构造 输入:ping www.baidu.com
*
* @param cmdStr
*/
public ExecPing(String cmdStr) {
// this.cmdStr = cmdStr;
this.cmdStr = "ping " + cmdStr;
this.sentNum = 4;
} /**
* 多参构造 输入:ping -n 10 www.baidu.com
*
* @param cmdStr
* ping www.baidu.com
* @param paraOne
* -n
* @param paraTwo
* 10
*/
// www.baidu.com","-n","100"
public ExecPing(String cmdStr, String paraOne, String paraTwo) {
this.cmdStr = "ping " + paraOne + " " + paraTwo + " " + cmdStr;
this.sentNum = Integer.parseInt(paraTwo); } /**
* 执行方法
*
* @return
*/
public void exec() {
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
try {
Process p = Runtime.getRuntime().exec(cmdStr);
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
// StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
} } catch (Exception e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} String str = sb.toString();
System.out.println(str); int indexLostNum = str.indexOf("丢失 = ");
String strLostNum = str.substring(indexLostNum + 5); // 找到位置
String[] strLostNumArr = strLostNum.split(" ");// 拆分截取的字符串,取第一个内容
setLostNum(Integer.parseInt(strLostNumArr[0]));
// System.out.println("丢失了:" + Integer.parseInt(strLostNumArr[0]) +
// "个"); int indexLostPerNum = str.indexOf("丢失 = 0 (");
String strLostPerNum = str.substring(indexLostPerNum + 8); // 找到位置
String[] strLostPerNumArr = strLostPerNum.split("%");// 拆分截取的字符串,取第一个内容
setLostPer(Integer.parseInt(strLostPerNumArr[0])); int indexMaxPingVal = str.indexOf("最长 = ");
String strMaxPingVal = str.substring(indexMaxPingVal + 5); // 找到位置
String[] strMaxPingValArr = strMaxPingVal.split("m");// 拆分截取的字符串,取第一个内容
setMaxPingVal(Integer.parseInt(strMaxPingValArr[0])); int indexMinPingVal = str.indexOf("最短 = ");
String strMinPingVal = str.substring(indexMinPingVal + 5); // 找到位置
String[] strMinPingValArr = strMinPingVal.split("m");// 拆分截取的字符串,取第一个内容
setMinPingVal(Integer.parseInt(strMinPingValArr[0])); } public void getSentNum() {
System.out.println("ping了:" + sentNum + "次");
} public void getLostPer() {
System.out.println("丢失率:" + lostPer + "%");
} public void setLostPer(int lostPer) {
this.lostPer = lostPer;
} public void getLostNum() {
System.out.println("丢失了:" + lostNum + "个");
} public void setLostNum(int lostNum) {
this.lostNum = lostNum;
} public void getMaxPingVal() {
System.out.println("最长:" + maxPingVal + "毫秒");
} public void setMaxPingVal(int maxPingVal) {
this.maxPingVal = maxPingVal;
} public void getMinPingVal() {
System.out.println("最短:" + minPingVal + "毫秒");
} public void setMinPingVal(int minPingVal) {
this.minPingVal = minPingVal;
} }
package day14_1;
public class TestExecPing {
public static void main(String[] args) {
ExecPing ep = new ExecPing("www.baidu.com","-n","2");
ep.exec();
System.out.println("======================================");
ep.getLostNum();
ep.getLostPer();
ep.getMaxPingVal();
ep.getMinPingVal();
ep.getSentNum();
}
}
运行截图如下:

Java实现获取命令行中的指定数据的更多相关文章
- Java实现获取命令行中获取指定数据
执行ipconfig /all获取主机所有网卡信息并分析这些字符串,提取出有效网卡(网卡名称,mac地址,ipv4地址,掩码,网关,dns)将网卡插入HashMap中,key是网卡的名称,value是 ...
- Java-Runoob-高级教程-实例-数组:14. Java 实例 – 在数组中查找指定元素
ylbtech-Java-Runoob-高级教程-实例-数组:14. Java 实例 – 在数组中查找指定元素 1.返回顶部 1. Java 实例 - 在数组中查找指定元素 Java 实例 以下实例 ...
- 【Java EE 学习 78 中】【数据采集系统第十天】【Spring远程调用】
一.远程调用概述 1.远程调用的定义 在一个程序中就像调用本地中的方法一样调用另外一个远程程序中的方法,但是整个过程对本地完全透明,这就是远程调用.spring已经能够非常成熟的完成该项功能了. 2. ...
- 【Java EE 学习 69 中】【数据采集系统第一天】【SSH框架搭建】
经过23天的艰苦斗争,终于搞定了数据采集系统~徐培成老师很厉害啊,明明只是用了10天就搞定的项目我却做了23天,还是模仿的...呵呵,算了,总之最后总算是完成了,现在该好好整理该项目了. 第一天的内容 ...
- java多线程向数据库中加载数据
读取本地文件,每行为一条记录,文件大小550M,200万条数据.先将文件读取的内存中,再开启6个线程连接postgresql不同coordinator端口导入数据.代码如下: import java. ...
- Java读取oracle数据库中blob字段数据文件保存到本地文件(转载)
转自:https://www.cnblogs.com/forever2698/p/4747349.html package com.bo.test; import java.io.FileOutput ...
- java 判断Map集合中包含指定的键名,则返回true,否则返回false。
public static void main(String[] args) { Map map = new HashMap(); //定义Map对象 map.put("apple" ...
- java启动jar包中的指定类
运行jar文件的方法是:java -jar xxx.jar 希望运行里面的具体某个类,这时可以通过:java -cp xxx.jar xxx.com.xxxx 其中-cp命令是将xxx.jar加入到c ...
- Java快速向数据库中插入大量数据 比如10万条以上
String sql = "insert into table *****"; //必须要有这句,要不然效果不明显 con.setAutoCommit(false); ps = c ...
随机推荐
- 【Linux】zookeeper-3.5.6启动失败8080端口被占用
通过查看zookeeper的官方文档 1. 可以禁用adminServer 2.可以删除jetty服务
- 工作小记[csv文件、admin中filed与list_display区别、ModuleNotFoundError: No module named'xxx'、django创建admin用户]
CSV-Comma Separated Values,CSV文件可以直接用Excel表格打开,如果用文本打开属性之间用逗号隔开,Python有直接操作CSV文件的函数. fileds字段控制“修改添加 ...
- Compilation failed (return status=1): g++.exe: error: CreateProcess: No such file or directory错误
windows10上 theano安装之后出现的问题 >>> import theano You can find the C code in this temporary file ...
- 金题大战Vol.0 A、凉宫春日的叹息
金题大战Vol.0 A.凉宫春日的叹息 题目描述 给定一个数组,将其所有子区间的和从小到大排序,求第 \(k\) 小的是多少. 输入格式 第一行两个数\(n\),$ k\(,表示数组的长度和\)k$: ...
- 图论算法(四)Dijkstra算法
最短路算法(三)Dijkstra算法 PS:因为这两天忙着写GTMD segment_tree,所以博客可能是seg+图论混搭着来,另外segment_tree的基本知识就懒得整理了-- Part 1 ...
- XXE漏洞学习笔记
XXE 参考文章 名称 地址 一篇文章带你深入理解漏洞之 XXE 漏洞 https://xz.aliyun.com/t/3357 Web Hacking 101 https://wizardforce ...
- 【算法•日更•第三十九期】迭代加深搜索:洛谷SP7579 YOKOF - Power Calculus 题解
废话不多说,直接上题: SP7579 YOKOF - Power Calculus 题意翻译 (略过没有营养的题干) 题目大意: 给出正整数n,若只能使用乘法或除法,输出使x经过运算(自己乘或除自己, ...
- Javascript模块化编程(二):AMD规范 (转)
原文作者: 阮一峰 日期: 2012年10月30日 这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? ...
- golang []byte 和 string相互转换
原文链接:golang []byte和string相互转换 测试例子 package main import ( "fmt" ) func main() { str2 := &qu ...
- ovs 删除流表 指定 actions 中字段
例: ovs-ofctl del-flows br-int in_port=100,out_group=100 -O openflow13 ovs-ofctl del-flows br-int in_ ...