用getRuntime().exec()调用系统copy、xcopy命令去做文件或者文件夹的copy已经非常不推荐了,虽然该方法效率上比较高,但有很多附加的隐患,比如当copy失败的时候,程序就会卡在那里,这是程序执行的时候所不允许出现的;因此推荐另外一种解决方案:使用Apache的开源项目Commons-IO中的FileUtils去做文件copy工作,效率也是非常高的,而且不会出现程序卡的那里的情况;
--------------------------------------------------------------------------------------------------------------------------
参考文档地址:
http://bjyzxxds.iteye.com/blog/453151
总结一下:
1.用getRuntime().exec()调用copy:
windows中的copy命令:copy [源文件路径] [目标文件路径或目标文件的父文件夹路径]
正确的写法示例如下:
java.lang.Runtime.getRuntime().exec("cmd /c copy C:\\cubeETL_TEST\\cog\\buildDir\\231.mdc C:\\cubeETL_TEST\\cog\\publish1\\231.mdc");
2.
用getRuntime().exec()调用xcopy:
windows中的xcopy命令:xcopy [源文件夹路径] [目标文件夹路径] (以及一系列参数)
正确的写法示例:
java.lang.Runtime.getRuntime().exec("cmd /c xcopy C:\\cubeETL_TEST\\cog\\buildDir\\231 C:\\cubeETL_TEST\\cog\\publish1\\231\\ /E /H");
像原文中所说的,源目录路径后面不要带“\”,而目标路径后面需要带“\”,这一点我们自己尝试一下就知道为什么要这样了,另外一点,该处需要加相应的参数,/E表示将复制目录和子目录,包括空目录;/H表示复制包括隐藏文件和系统文件;我个人觉得这两个参数一般都要加的;