在java中调用Runtime运行Linux的重定向的解决方法

一般来说直接接在Linux上运行重定向命令是没有问题的。但是通过java的Runtime类运行命令时不成功。

通常有两种解决办法:

方法一:

    把Runtime.exec()返回的结果Process可以获取到写入流中。
		Process process = runtime.exec(command);
		InputStreamReader is = new InputStreamReader(process.getInputStream());
		BufferedReader br = new BufferedReader(is);
		String line = null;
		while((line = br.readLine())!=null){
			System.out.println(line); 
		}

也可以通过文件输出流输出到本地。

方法二:

直接执行:

Runtime.getRuntime().exec(mysqldump -uusername -ppassword -hhost -P1800 --databases gxt_main_db --tables mac_summary --no-create-info --where='mac=52242000447'  >>/home/workspace/test/files/sql_files/mac_summary.sql);

不会有结果产生。

因为exec不能加入重定向和管道符号。

改成如下执行

String[] command = {"sh","-c","mysqldump -uusername -ppassword -hhost -P1800 --databases gxt_main_db --tables mac_summary --no-create-info --where='mac=52242000447'  >>/home/workspace/test/files/sql_files/mac_summary.sql"}

Runtime.getRuntime().exec(command)

问题就可以得到解决!

你可能感兴趣的:(在java中调用Runtime运行Linux的重定向的解决方法)