加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux从Java程序复制文件

发布时间:2020-12-13 23:07:58 所属栏目:Linux 来源:网络整理
导读:我用getRuntime()API编写了一个小的 java代码,用于将文件从一个目录复制到另一个目录,它失败了,我无法理解为什么?当我从shell运行命令它运行正常,任何人都可以,让我知道我正在做的错误 private static void copyFilesLinux(String strSource,String strDest
我用getRuntime()API编写了一个小的 java代码,用于将文件从一个目录复制到另一个目录,它失败了,我无法理解为什么?当我从shell运行命令它运行正常,任何人都可以,让我知道我正在做的错误

private static void copyFilesLinux(String strSource,String strDestination) {

    String s;
    Process p;
    try {
        // cp -R "/tmp/S1/"*  "/tmp/D1/"
        p = Runtime.getRuntime().exec(
                "cp -R '" + strSource + "/'* '" + strDestination + "/'");
        System.out.println("cp -R "" + strSource + "/"* "" + strDestination + "/"");
        System.out.println("cp -R '" + strSource + "/'* '" + strDestination + "/'");
        System.out.println(p.toString());
        BufferedReader br = new BufferedReader(new InputStreamReader(
                p.getInputStream()));
        while ((s = br.readLine()) != null)
            System.out.println("line: " + s);
        p.waitFor();
        System.out.println("exit: " + p.exitValue());
        p.destroy();
    }
    catch (InterruptedException iex) {
        iex.printStackTrace();
    }
    catch (IOException iox) {
        iox.printStackTrace();
    }
    catch (Exception e) {
        e.printStackTrace();
    }

}

输出:

cp -R "/tmp/S1/"* "/tmp/D1/"

cp -R '/tmp/S1/'* '/tmp/D1/'

java.lang.UNIXProcess@525483cd

exit: 1

解决方法

当您使用Runtime.exec()的任何变体时,将直接调用二进制文件,而不是通过shell调用.这意味着 wildcards are not supported,因为没有shell来扩展它们.

我建议使用Java代码来复制你的文件 – 它会更便携,更安全.除此之外,您可以使用shell二进制文件通过其-c选项执行命令.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读