对于Windows和Linux,它通常只是一个简单的......
cp -a "$sourceDir"/* "$targetDir" # on linux
或
xcopy /s /e %srcdir%\* %trgtdir% # on windows
然而,我无法找到一个准备好的java库或工具,就像xcopy / robocopy或bp上的bash一样,没有添加一个全新的" copy"我的应用程序的类:/。
我是否有充分理由重新发明轮子"并且不只是做某种"外部shell执行"调用其中一个命令行工具在2-3行代码中完成工作?
感谢您的任何建议和解释。 阿克塞尔
答案 0 :(得分:1)
这是一个Java语句解决方案:
Runtime.exec(new String[] {"sh", "-c",
"cp -a \"" + src + ""/* \"" + target + "\""});
显然不便携,但这里没有轮子的重新发明。
诀窍是让shell为你处理通配符扩展。
答案 1 :(得分:1)
Apache Commons I / O有一个执行此操作的方法,您需要使用three-argument version of FileUtils.copyDirectory
而不是双参数版本(复制目录本身而不是其内容):
:delete
此方法将指定源目录的内容复制到指定的目标目录中。
答案 2 :(得分:0)
我上下搜索网络,找到了解决方案""使用
Oracles
和/或Apaches FileUtils
等处理每个文件和目录,并且可以在命令行shell上完成由SINGLE LINE完成的任务。
我最初的想法是......
...........................................
为什么你说ApacheCommons.FileUtils
是20行代码?
copyDirectoryToDirectory(File srcDir, File destDir) API says
:
将目录复制到另一个目录中,保留文件日期。
此方法将源目录及其所有内容复制到指定目标目录中的同名目录。
FileUtils.copyDirectoryToDirectory(new File(folder_source), new File(folder_destiny));
但他们都需要一些重新发明的轮子"并且有20多行代码
您是否检查了cp命令源代码有多长?
来自www.gnu.org的cp.c
代码超过1000行。