用作命令行参数时保留String中的空格

时间:2014-04-27 11:24:05

标签: java whitespace args

我正在尝试用Java编写一个GUI,它可以将用户输入发送到其他文件进行处理,这是使用命令行参数完成的。除非用户尝试发送带有空格的字符串,否则这样可以正常工作,因为它们被解释为单独的参数。这是一个例子:

public String exampleMethod(String userInput, String fileName)
{

    try 
    {
        String output = "";
        Process p = Runtime.getRuntime().exec("./directory/" + fileName + " " + userInput);
        BufferedReader in = new BufferedReader(
                            new InputStreamReader(p.getInputStream()));
        String line = null;
        while ((line = in.readLine()) != null) 
        {
            output = output + line;
        }
        return output;
    }
    catch (IOException e) 
    {
        e.printStackTrace();
        return "ERROR: I/O Exception";
    }

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

空格用于分隔参数。用户应使用引号(")。

答案 1 :(得分:0)

您可以使用Java的内置ProcessBuilder来执行此操作。类似的东西:

Process p = new ProcessBuilder("./directory/" + fileName, userInput).start();

或者,对于更健壮的东西,请查看Apache's Commons Exec框架,尽管必要的代码有点冗长。