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("~~~"); } }