【问题标题】:bash commands using java process builder for copying file使用 java 进程构建器复制文件的 bash 命令
【发布时间】:2015-02-28 13:33:16
【问题描述】:

我正在使用以下 java 代码执行 bash 命令,当尝试复制文件时,该函数返回非零值但我能够创建文件。

复制命令:cp demo.txt /shared

输出为:127

创建文件命令:echo 'sample text' > demo.txt

输出为:0

public static int run(final String command)  
{
    String[] finalCommand;
    Process process=null;
    int temp=0;

        finalCommand = new String[3];
        finalCommand[0] = "bash";//"/usr/bin/ksh";
        finalCommand[1] = "-c";
        finalCommand[2] = command;

try {
    final ProcessBuilder processBuilder = new ProcessBuilder(finalCommand);
    processBuilder.redirectErrorStream(true);
    process = processBuilder.start();
    temp=process.waitFor();
    } 
    catch (IOException e) 
    { 
    System.out.println( e.getMessage()); 
    } 
    catch (InterruptedException e) { 
    System.out.println(e.getMessage()); 
    }
    return temp;
}

请帮忙

【问题讨论】:

  • 你有文件夹 /shared 并且你有 /shared 的写权限吗?
  • 打印标准输出,看看你遇到了什么错误
  • 当您从 shell 尝试 cp demo.txt /shared 时,它是否有效?

标签: java bash processbuilder file-copying


【解决方案1】:

cp 失败和 echo 工作的一种可能性是由于 cp 是外部命令而 echo 是内置命令。

如果设置并导出了 PATH 环境变量,则只能通过其文件名找到外部命令。

但在这种情况下,永远不要依赖 PATH - 使用完整的路径名:

String command = "/bin/cp demo.txt /shared";

另外:你在 /shared 中有写权限吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2020-10-07
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 2018-04-15
    相关资源
    最近更新 更多