先上代码
Process p = Runtime.getRuntime().exec(cmdlines);
String line;
BufferedReader input =new BufferedReader(new InputStreamReader(p.getInputStream()));
//读取屏幕输出
while ((line = input.readLine()) != null) {
System.out.println("java print:"+line);
}
//关闭输入流
input.close();我想问下为什么这个只能获取系统级别的CMD命令 比如 PING,我执行JAVA -VERSION就获取不到结果呢
Process p = Runtime.getRuntime().exec(cmdlines);
String line;
BufferedReader input =new BufferedReader(new InputStreamReader(p.getInputStream()));
//读取屏幕输出
while ((line = input.readLine()) != null) {
System.out.println("java print:"+line);
}
//关闭输入流
input.close();我想问下为什么这个只能获取系统级别的CMD命令 比如 PING,我执行JAVA -VERSION就获取不到结果呢
解决方案 »
- 我想在linux做J2EE开发,一般都用哪个版本的linux做开发?
- js window.open('url','_blank') 打开服务器端临时文件遇到的难题。
- 关于jbpm中的的 TaskNode 的属性
- 读不懂的一个HQL语句
- ejb的增,删,改,查例子
- 怎么将一个对象存到一个字段中啊?急,在线等!高手请!
- 50分求Strust1.2+Spring+Hibernate3.1的增删该查的例子
- 我看SPRING中的getBean()得到一个BEAN后,需要转型,这不是正好可以用泛型吗,但是不知道怎么用,把<>加哪里都不对?高手能不能跟我说下怎么用
- 急:关于struts(编辑页面)的困惑!
- 我是新手,请各位大虾推荐几本JSP和SERVLET的书或文章吧!
- 关于java方向
- 求高手解答SQL问题,满分送上!!!
你可以去"包裹"一个CMD来达到你的目的
String cmdlines = "dir";
Process p = Runtime.getRuntime().exec("cmd"); OutputStream os = p.getOutputStream();
InputStreamReader input =new InputStreamReader(p.getInputStream(),"GBK");
os.write(cmdlines.getBytes());
os.flush();
os.close();
char[] buf = new char[1024];
int size;
StringBuilder sb = new StringBuilder();
//读取屏幕输出
while((size = input.read(buf)) != -1) {
sb.append(buf,0,size);
}
System.out.println(sb.toString());
//关闭输入流
input.close();
都没有得到我想要的,我要的就是执行CMD的 java -version,获取它的版本信息
发现现在CSDN的人气越来越少了
可能是现在的技术论坛越来越多了
import java.io.*;
import java.nio.*;
public class Test {
public static void main(String[] args) throws IOException {
new Test().testConsole();
}
private Process p = null;
public void testConsole() {
try {
p = Runtime.getRuntime().exec("cmd");
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
new ConsoleReturn(p.getInputStream()).start();
new ConsoleReturn(p.getErrorStream()).start();
new ConsoleOutput(p.getOutputStream()).start();
}
private class ConsoleOutput extends Thread {
private OutputStream os;
public ConsoleOutput(OutputStream os) {
this.os = os;
}
@Override
public void run() {
InputStream console = System.in;
InputStreamReader reader = null;
try {
reader = new InputStreamReader(console,"GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
BufferedReader br = new BufferedReader(reader);
String cmd;
PrintWriter pw = new PrintWriter(os);
while(true) {
try {
cmd = br.readLine();
} catch (IOException e) {
e.printStackTrace();
break;
}
if(cmd.equals("exit")) {
break;
} else {
pw.println(cmd);
pw.flush();
}
}
pw.close();
}
}
private class ConsoleReturn extends Thread {
private InputStream is;
public ConsoleReturn(InputStream is) {
this.is = is;
}
@Override
public void run() {
InputStreamReader reader = null;
try {
reader = new InputStreamReader(is,"GBK");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
char[] buf = new char[1024];
int size;
while(true) {
try {
size = reader.read(buf);
} catch (IOException e) {
e.printStackTrace();
break;
}
if(size != -1) {
System.out.print(new String(buf,0,size));
} else {
break;
}
}
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}