我正在编写一个 android 应用程序来执行 traceroute 命令。
现在,当 traceroute 执行时,它会将控制台输出放入一个非常长的单个字符串中。这是通过以下代码完成的:
public void runAsRoot(String[] cmds) throws Exception {
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
InputStream is = p.getInputStream();
for (String tmpCmd : cmds) {
os.writeBytes(tmpCmd+"\n");
int readed = 0;
byte[] buff = new byte[4096];
// if cmd requires an output
// due to the blocking behaviour of read(...)
boolean cmdRequiresAnOutput = true;
if (cmdRequiresAnOutput) {
while( is.available() <= 0) {
try { Thread.sleep(10000); } catch(Exception ex) {} //timeout.. gotta watch this carefully.
}
while( is.available() > 0) {
readed = is.read(buff);
if ( readed <= 0 ) break;
String seg = new String(buff,0,readed);
System.out.println("#> "+seg);
ListofIPs = seg;
}
}
}
os.writeBytes("exit\n");
os.flush();
}
此字符串的输出如下所示:
我想要做的是获取此输出并仅提取 IP 地址并将它们按顺序放入数组中。这就是我不知道从哪里开始的地方。我正在考虑某种类型的字符串操作,但不知道从哪里开始。
如果有人有任何想法或指示,我将不胜感激。
提前致谢。