java 调用外部程序_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java 调用外部程序

java 调用外部程序

 2012/5/10 10:41:11  haoran_10  程序员俱乐部  我要评论(0)
  • 摘要:javaRuntime、Process类,可以调用外部命令,主要方法是:Runtime:1.没有构造函数,只有这个静态方法:publicstaticRuntimegetRuntime()返回与当前Java应用程序相关的运行时对象2.执行外部命令,传递字符串参数,返回Process类:publicProcessexec(Stringcommand)throwsIOException在单独的进程中执行指定的字符串命令Process:1.获取子进程的错误流
  • 标签:程序 Java

java Runtime、Process类,可以调用外部命令,主要方法是:

?

?

Runtime:

?

1.没有构造函数,只有这个静态方法 :public static Runtime getRuntime()返回与当前 Java 应用程序相关的运行时对象

?

2.执行外部命令,传递字符串参数,返回Process类:

?

public Process exec(String command)throws IOException在单独的进程中执行指定的字符串命令

?

?

Process:

?

1.获取子进程的错误流:

?

public abstract InputStream getErrorStream();

?

获取子进程的错误流,错误流获得由该 Process 对象表示的进程的错误输出流传送的数据。

?

2.获取子进程的输入流:

?

public abstract InputStream getInputStream();

?

获取子进程的输入流,输入流获得由该 Process 对象表示的进程的标准输出流。?

?

例子

?

1->打开一个记事本程序:

?

Runtime runtime = Runtime.getRuntime();
runtime.exec("notepad");//打开一个记事本
?

?

2->关机操作:

?

Runtime runtime = Runtime.getRuntime();
runtime.exec("shutdown -s");//关机

?

?3->运行cmd操作,为了立即关闭cmd窗口,写法应该是:cmd /c cmd命令,或者把批命令写在一个bat文件里,进行调用批命令

?

a):调用cmd命令,获取调用的输入流,并输出:cmd dir

?

Runtime runtime = Runtime.getRuntime();
runtime.exec("cmd /c dir");
InputStream input = process.getInputStream();
BufferedReader buffered = new BufferedReader(new InputStreamReader(input));
String str;
while((str=buffered.readLine())!=null){
	System.out.println(str);
}
?

?

b):调用cmd命令,获取调用的错误输入流,并输出:cmd 错误指令

?

Runtime runtime = Runtime.getRuntime();
runtime.exec("cmd /c test");
InputStream input = process.getErrorStream();
BufferedReader buffered = new BufferedReader(new InputStreamReader(input));
String str;
while((str=buffered.readLine())!=null){
	System.out.println(str);
}

?

?c)'综合下:调用javac 编译一个java文件

?

public static void test(String fileName)throws Exception{
	Runtime runtime = Runtime.getRuntime();//创建runtime实例

	Process process = runtime.exec("javac  "+fileName);

	InputStream errStream = process.getErrorStream();//错误流
	InputStream inputStream = process.getInputStream();//输入流
	
	//封装下
	BufferedReader errReader = new BufferedReader(new InputStreamReader(errStream));
	BufferedReader inputReader = new BufferedReader(new InputStreamReader(inputStream));
	
	
	String str;
	//把信息纪录到文件里
	File errfile = new File("errFile.txt");
	File inputfile = new File("inputFile.txt");
	BufferedWriter errWrite = new BufferedWriter(new FileWriter(errfile));
	BufferedWriter inputWriter = new BufferedWriter(new FileWriter(inputfile));
	while((str=errReader.readLine())!=null){
		System.out.println(str);
		errWrite.write(str);
		errWrite.newLine();
		errWrite.flush();
	}
	while((str=inputReader.readLine())!=null){
		System.out.println(str);
		inputWriter.write(str);
		inputWriter.newLine();
		inputWriter.flush();
	}
	//不要忘了关闭
	errReader.close();
	inputReader.close();
	errWrite.close();
	inputWriter.close();
}

?

?注释:如果调用java命令时,在同一目录下有已编译好的class文件,只需传递文件名,不需路径信息

?

?

?

发表评论
用户名: 匿名