force通过java代码使用bash命令创建目录

时间:2011-12-06 08:38:50

标签: java linux bash sh

我遇到了麻烦。我试图通过linux服务器中的java代码强制使用bash命令创建一个文件夹。我的代码如下 -

String command = "/root/new_scripts/makedir.sh /webroot/Own";
    try {
        Runtime runtime = Runtime.getRuntime();
        Process process = runtime.exec(command);
        return "true";
    } catch (Exception ex) {
        return ex.toString();
    }

和makedir.sh文件包含

#!/bin/bash
mkdir $1

但它无法创建目录。

并且还尝试使用java代码创建一个目录如下 -

String s = null;
    try {
        Process p = Runtime.getRuntime().exec("mkdir /webroot/Own");
        BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
        BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
        // read the output from the command
        System.out.println("\n\n\nHere is the standard output of the command:\n");
        while ((s = stdInput.readLine()) != null) {
            System.out.println(s);
        }
        // read any errors from the attempted command
        System.out.println("Here is the standard error of the command (if any):\n");
        while ((s = stdError.readLine()) != null) {
            System.out.println(s);
        }
    } catch (Exception ex) {
        System.out.println("\n\n\nexception happened - here's what I know: ");
        ex.printStackTrace();
    }

但它给了我以下错误 -

以下是命令的标准输出:

以下是命令的标准错误(如果有):

mkdir:无法创建目录`/ webroot / Own':权限被拒绝

3 个答案:

答案 0 :(得分:2)

为什么不使用直接调用mkdir系统调用的Java mkdir函数?

由于许可问题,它可能会失败。

答案 1 :(得分:1)

尝试更改项目目录权限:chmod +w /<your project directory>然后使用mkdir命令。

答案 2 :(得分:1)

用Java处理进程的输出并不是最简单的事情。如果仅用于debugginh,我会像这样修改makedir.sh;

mkdir $2 > err.txt 2>err.txt

运行你的java代码然后检查err.txt-期望在那里找到像permission denied这样的东西。对于生产代码,您希望您的Java应用程序了解makedir.sh的失败。请查看this精彩文章,了解有关如何正确阅读流程'流的提示。