Java在windows环境中进行目录切换

java通过Runtime类可以调用环境中的可执行程序。

1、执行DOS命令

exec("cmd.exe /c dir"); 其中参数“/c”表示命令执行后立即关闭窗口

2、调用可执行命令

exec("cmd.exe /c test.bat");

exec(" c:\Program Files\Microsoft Office\office\winword.exe .\a.doc");

执行切换目录操作不能如此进行

exec("cmd.exe /c cd d:\");

exec("cmd.exe /c dir");

经过网上查询,可将命令写进文件(exec.bat)保存在文件系统中后,再执行exec.bat。

代码如下:

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;

public class Test {
	
	public static void main(String args[]) {
		Runtime r = Runtime.getRuntime();
		
		try {
			Test t = new Test();
			String userdir = System.getProperty("user.dir");//获取当前工作目录
			
			//开始生成脚本文件
			File f = new File(userdir+"\exec.bat");
			FileOutputStream fos = new FileOutputStream(f);
			
			fos.write("c: 
".getBytes());
			fos.write("javac *.java 
".getBytes());
			fos.write("java HelloWorld badfish 
".getBytes());
			
			fos.flush();
			fos.close();
			
			//执行脚本文件
			t.exec(r,userdir+"\exec.bat");
			
			//删除脚本文件
			f.delete();
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("Error executing notepad.");
		}
		
	}
	
	//执行命令同时打印屏幕信息
	public void exec(Runtime r , String arg) throws Exception{
		Process p = null;
		
		p = r.exec(arg);
		
		InputStream is = p.getInputStream();
		String s = null;
		LineNumberReader lnr = new LineNumberReader(new InputStreamReader(is));
		while( (s = lnr.readLine()) != null ){
			System.out.println(s);
		}
		
		System.out.println("~~~");
	}

}
经验分享 程序员 微信小程序 职场和发展