您的位置:首页 > 产品设计 > UI/UE

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();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: