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选项执行命令. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |