Java代码在指定目录下运行DOS命令

  • Post author:
  • Post category:java


昨天PM让用LIbreOffice 将doc文档转换成pdf,转换效果很差,

BUT

,这不重要,本文介绍的是使用java代码 在指定目录下执行DOS命令。

开门见山:


Runtime.getRuntime().exec(command) 这句代码是执行系统命令的关键。

exec()函数有很多重构方法,主要包含如下
 public Process exec(String command)-----在单独的进程中执行指定的字符串命令。
 
 public Process exec(String [] cmdArray)---在单独的进程中执行指定命令和变量
 
 public Process exec(String command, String [] envp)----在指定环境的独立进程中执行指定命令和变量
 
 public Process exec(String [] cmdArray, String [] envp)----在指定环境的独立进程中执行指定的命令和变量
 
 public Process exec(String command,String[] envp,File dir)----在有指定环境和工作目录的独立进程中执行指定的字符串命令
 
 public Process exec(String[] cmdarray,String[] envp,File dir)----在指定环境和工作目录的独立进程中执行指定的命令和变量

实现代码:

public static void convert(String docPath,String storePath){
		
	try {
		File dir = new File("F:\\install\\install_LibreOffice5\\program");//此处是指定路径	
		String[] cmd = new String[] { "cmd", "/c", 
					"soffice --headless -invisible --convert-to pdf "+docPath+ " --outdir "+storePath
		};// cmd[2]是要执行的dos命令
		System.out.println(cmd[2]);
		Process process = Runtime.getRuntime().exec(cmd,null,dir);
			
		// 记录dos命令的返回信息  
           	 StringBuffer resStr = new StringBuffer();  
           	 // 获取返回信息的流  
           	InputStream in = process.getInputStream();  
            	Reader reader = new InputStreamReader(in);  
            	BufferedReader bReader = new BufferedReader(reader);  
           	for (String res = ""; (res = bReader.readLine()) != null;) {  
               		resStr.append(res + "\n");  
                }  
           	System.out.println(resStr.toString());
            	bReader.close();  
           	reader.close();  
            	process.getOutputStream().close();  // 不要忘记了一定要关
            
	    } catch (IOException e) {
			// TODO Auto-generated catch block
		e.printStackTrace();
	    }
	}

public static void main(String[] args) {
		System.out.println("开始转译-------------");
		convert("F:\\Work\\Testdoc.doc","F:\\work");
		System.out.println("结束转译-------------");
	}

运行结果

参考文章:

点击打开链接


—————————————————-欢迎留言 指正—————————————————————



版权声明:本文为sinat_33248260原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。