JDK1.6存在一个方法错误,大家一起来交流下

    今天在公司做项目时,用到这么一个功能:需要批量执行一些DOS的XCOPY指令,这些指令是通过JAVA后台的字符串操作拼接出来的,示例如下:
   
        
        xcopy D:\DocCenterB\2010\09\03\13\21\59\DocId_1708 D:\backup\20100903152219\file\2010\09\03\13\21\59\DocId_1708 /y /i /e /c 
xcopy D:\DocCenterB\2010\09\03\13\22\00\DocId_1709 D:\backup\20100903152219\file\2010\09\03\13\22\00\DocId_1709 /y /i /e /c 
xcopy D:\DocCenterB\2010\09\03\13\22\10\DocId_1710 D:\backup\20100903152219\file\2010\09\03\13\22\10\DocId_1710 /y /i /e /c 
xcopy D:\DocCenterB\2010\09\03\13\22\11\DocId_1711 D:\backup\20100903152219\file\2010\09\03\13\22\11\DocId_1711 /y /i /e /c 
xcopy D:\DocCenterB\2010\09\03\13\22\12\DocId_1712 D:\backup\20100903152219\file\2010\09\03\13\22\12\DocId_1712 /y /i /e /c 
xcopy D:\DocCenterB\2010\09\03\13\22\31\DocId_1713 D:\backup\20100903152219\file\2010\09\03\13\22\31\DocId_1713 /y /i /e /c 

   


    起初的做法,我通过Process类里面,调用exec(String[] cmdArray)方法去批量执行上述复制指令,不知道大家怎么做的,捕获的异常上看,执行第一句复制的时候,产生ERROR,原因显示是乱码。文件与对应的目录都是存在的。网上找了些资料,没有找到相应的解决方法,无奈之下,写了个循环,一条一条地去执行复制操作,结果是成功的,但我想这个代价实在太大,指令越多意味着执行的进程数越多。而SUN公司现有的批量执行API调用是失败的。换句话说,JDK里面Process.exec(String[] cmdArray)是有问题的,我目前测试下来。但是,Process.exec(String cmd)是没有问题的,大家可以去试一下。我的是JDK1.6.0

2012年11月2日,今天偶尔翻翻以前的博客,心血来潮再来研究runtime.exec那个问题,经过我大量的百度之后,终于了解了,文章地址: http://blog.csdn.net/anbo724/article/details/6636288。原来exec的方法传一个字符串组的话,也是执行一条指令,格式为:第一个元素为命令,第二个元素一直到第N个元素都是参数,这下终于明白了。下次批量复制文件,我一定会生成BAT文件,然后执行操作。

你可能感兴趣的:(jdk,C++,c,dos,C#)