windows下ProcessBuilder和Runtime.getRuntime().exec()对空格的通用处理
2011-11-22 16:50
387 查看
windows下ProcessBuilder和Runtime.getRuntime().exec()对空格的通用处理就是将带空格路径中的空格用双引号括起来。
1. Runtime.getRuntime.exec()示例
public class ExecTest {
static public void main(String[] args) {
//String cmds = "cmd /c echo mmm";
String path = "D:/Program Files/test.bat";
String cmds1 = "cmd /c start " + "\""+ "\" " + path.replace(" ", "\" \"");
System.out.println(cmds1);
try {
Process ps = Runtime.getRuntime().exec(cmds1);
/*
* System.out.print(loadStream(ps.getInputStream()));
*
* System.err.print(loadStream(ps.getErrorStream()));
*/
loadStream(ps.getInputStream());
loadStream(ps.getErrorStream());
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
// read an input-stream into a String
static void loadStream(InputStream in) throws IOException {
/*
* int ptr = 0;
*
* in = new BufferedInputStream(in);
*
* StringBuffer buffer = new StringBuffer();
*
* while ((ptr = in.read()) != -1) {
*
* buffer.append((char) ptr);
* }
*
* return buffer.toString();
*/
try {
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
2. ProcessBuilder示例
public class ProcessBuilderTest {
public static void main(String[] args) {
try {
List list = new ArrayList();
ProcessBuilder pb = null;
Process p = null;
String line = null;
BufferedReader stdout = null;
// list the files and directorys under C:\
String cmd = "D:\\Program\" \"Files\\test.bat";
list.add("CMD.EXE");
list.add("/C");
list.add(cmd. replace(" ", "\" \"");
pb = new ProcessBuilder(list);
pb.directory(new File("E:\\"));
p = pb.start();
stdout = new BufferedReader(new InputStreamReader(
p.getInputStream()));
while ((line = stdout.readLine()) != null) {
System.out.println(line);
}
stdout.close();
// echo the value of NAME
pb = new ProcessBuilder();
pb.command(new String[] { "CMD.exe", "/C", "echo %ENV%" });
pb.environment().put("ENV", "TEST");
p = pb.start();
stdout = new BufferedReader(new InputStreamReader(
p.getInputStream()));
while ((line = stdout.readLine()) != null) {
System.out.println(line);
}
stdout.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
1. Runtime.getRuntime.exec()示例
public class ExecTest {
static public void main(String[] args) {
//String cmds = "cmd /c echo mmm";
String path = "D:/Program Files/test.bat";
String cmds1 = "cmd /c start " + "\""+ "\" " + path.replace(" ", "\" \"");
System.out.println(cmds1);
try {
Process ps = Runtime.getRuntime().exec(cmds1);
/*
* System.out.print(loadStream(ps.getInputStream()));
*
* System.err.print(loadStream(ps.getErrorStream()));
*/
loadStream(ps.getInputStream());
loadStream(ps.getErrorStream());
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
// read an input-stream into a String
static void loadStream(InputStream in) throws IOException {
/*
* int ptr = 0;
*
* in = new BufferedInputStream(in);
*
* StringBuffer buffer = new StringBuffer();
*
* while ((ptr = in.read()) != -1) {
*
* buffer.append((char) ptr);
* }
*
* return buffer.toString();
*/
try {
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
2. ProcessBuilder示例
public class ProcessBuilderTest {
public static void main(String[] args) {
try {
List list = new ArrayList();
ProcessBuilder pb = null;
Process p = null;
String line = null;
BufferedReader stdout = null;
// list the files and directorys under C:\
String cmd = "D:\\Program\" \"Files\\test.bat";
list.add("CMD.EXE");
list.add("/C");
list.add(cmd. replace(" ", "\" \"");
pb = new ProcessBuilder(list);
pb.directory(new File("E:\\"));
p = pb.start();
stdout = new BufferedReader(new InputStreamReader(
p.getInputStream()));
while ((line = stdout.readLine()) != null) {
System.out.println(line);
}
stdout.close();
// echo the value of NAME
pb = new ProcessBuilder();
pb.command(new String[] { "CMD.exe", "/C", "echo %ENV%" });
pb.environment().put("ENV", "TEST");
p = pb.start();
stdout = new BufferedReader(new InputStreamReader(
p.getInputStream()));
while ((line = stdout.readLine()) != null) {
System.out.println(line);
}
stdout.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
相关文章推荐
- java 路径 批处理空格 getRuntime().exec 空格解决办法
- Android ProcessBuilder与Runtime.getRuntime().exec诀别创建进程的区别
- Runtime.getRuntime().exec(...),参数带有空格的解决方法
- Java Runtime.getRuntime().exec() 执行带空格命令
- Runtime.getRuntime().exec(cmd)的超时处理
- [乐意黎原创] Process process=Runtime.getRuntime().exec();里面产生停滞(阻塞,blocking),怎么处理?
- Java运行Windows Dos bat脚本:Runtime.getRuntime().exec
- windows下通过Runtime.getRuntime().exec.()执行linuxshell脚本
- Runtime.getRuntime().exec(...),当参数中有空格时!
- [Android] ProcessBuilder与Runtime.getRuntime().exec分别创建进程的区别
- 使用Runtime.getRuntime().exec()的方法调用本地mysqldump.exe备份还原数据库(路径中含有空格和数字)的方法
- Java 使用Runtime.getRuntime.exec 和 ProcessBuilder 调用外部命令
- java 路径 批处理空格 getRuntime().exec 空格解决办法
- Process process = Runtime.getRuntime().exec(args);
- 用Runtime.getRuntime().exec(cmd)执行命令
- Runtime.getRuntime().exec执行阻塞问题解决
- 使用Runtime.getRuntime().exec()在java中调用python脚本
- 使用Runtime.getRuntime().exec()方法的几个陷阱
- Runtime.getRuntime().exec(command)的阻塞问题
- Runtime.getRuntime().exec