小弟有个需求执行一个外部程序,然后取得它的输出流作为我java程序的输入流
Process ps = Runtime.getRuntime().exec(cmd);
String str = (loadStream(ps.getInputStream()));
} private String loadStream(InputStream in) throws IOException {
int ptr = 0;
in = new BufferedInputStream(in);
StringBuffer buffer = new StringBuffer();
while ((ptr = in.read()) != -1) {
buffer.append((char) ptr);
} return buffer.toString();
}现在 str里面的内容是“HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (27484862) 3 days, 4:20:48.62”,但是我只想要Timeticks后面的内容,也就是“(27484862) 3 days, 4:20:48.62”,请问如何取得呢?
另外想请问下有没有合适的流处理类能方便的完成我这个需求呢?第一天看输入输出流处理,还对那些类不熟悉,感觉这个面向字节流的BufferedInputStream类操作起来也不是很方便。
Process ps = Runtime.getRuntime().exec(cmd);
String str = (loadStream(ps.getInputStream()));
} private String loadStream(InputStream in) throws IOException {
int ptr = 0;
in = new BufferedInputStream(in);
StringBuffer buffer = new StringBuffer();
while ((ptr = in.read()) != -1) {
buffer.append((char) ptr);
} return buffer.toString();
}现在 str里面的内容是“HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (27484862) 3 days, 4:20:48.62”,但是我只想要Timeticks后面的内容,也就是“(27484862) 3 days, 4:20:48.62”,请问如何取得呢?
另外想请问下有没有合适的流处理类能方便的完成我这个需求呢?第一天看输入输出流处理,还对那些类不熟悉,感觉这个面向字节流的BufferedInputStream类操作起来也不是很方便。
这句代码谁写的?
改成
BufferedInputStream in = new BufferedInputStream(in);
这样吗?原来那样也能编译运行成功。
private static String loadStream(InputStream in) throws IOException {
byte[] b = new byte[1024];
in.read(b);
return new String(b);
}
试试能否打印出东西来
private static String loadStream(InputStream is) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
int tempByte = 0;
while ((tempByte = is.read()) != -1)//逐个字节读取
baos.write(tempByte);
} catch (Exception e) {
}
byte tempByteArray[] = baos.toByteArray();
return new String(tempByteArray);
}
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (27484862) 3 days, 4:20:48.62如果不可以,你应该检查前面的代码
str = str.substring(str.indexOf("Timeticks: ")+11);
System.out.println(str);
1楼的代码已经能输出完整字符串的,我现在就想截取当中的“(27484862) 3 days, 4:20:48.62”
str = str.substring(str.indexOf("Timeticks: ")+11);
System.out.println(str);