这两天在改一个CMS问题的时候,需要使用到文件的copy,但是直接使用纯java的话存在的文件流的读写,如果在写文件流的过程中,写的文件被人访问到,那么此时该文件被是一个空文件,因此为了避免这种情况的发生考虑使用直接调用dos的move命令来完成文件的移动。
在网上找了很多的资料,拿了段代码
String cmd = "move c:\\1.txt d:\\";
Runtime.getRuntime().exec(cmd);
但是调试的发现怎么也执行不了,但是这个命令在dos里执行是没有问题的,然后继续找资料,发现必须调用cmd.exe才可以,因此代码又改成了
String cmd = "cmd move c:\\1.txt d:\\";
Runtime.getRuntime().exec(cmd);
继续测试发现还是不行,发现程序在一直在执行,但是不会在执行完毕后关闭,找了半天也没找到资料,于是去检查这个命令在java中调用时跟其他的语句是否一样,发现在调用dir命令 的时候是这样的
String cmd = "cmd /c dir";
刚开始还以为/c是用来表示c盘的盘符,所以没注意,后来查了资料才发现/c不是用来表示盘符而是表示执行字符串指定的命令然后中断,看了这个之后我才恍然大悟,之前程序为什么一直在吊着,后来我改了下
String cmd = "cmd /c move c:\\1.txt d:\\";
Runtime.getRuntime().exec(cmd);
一次性执行通过,仔细阅读了资料,cmd之后还是有很多参数可以选择,如下所示:
/C 执行字符串指定的命令然后终断
/K 执行字符串指定的命令但保留
/S 在 /C 或 /K 后修改字符串处理(见下)
/Q 关闭回应
/D 从注册表中停用执行 AutoRun 命令(见下)
/A 使向内部管道或文件命令的输出成为 ANSI
/U 使向内部管道或文件命令的输出成为 Unicode
/T:fg 设置前景/背景颜色(详细信息,请见 COLOR /?)
/E:ON 启用命令扩展(见下)
/E:OFF 停用命令扩展(见下)
/F:ON 启用文件和目录名称完成字符 (见下)
/F:OFF 停用文件和目录名称完成字符(见下)
/V:ON 将 ! 作为定界符启动延缓环境变量扩展。如: /V:ON 会
允许 !var! 在执行时允许 !var! 扩展变量 var。var 语法
在输入时扩展变量,这与在一个 FOR 循环内不同。
/V:OFF 停用延缓的环境扩展。
通过这些参数我们可以在不同的场景下使用不同的参数,然java顺利的调用到命令
参考资料:http://topic.csdn.net/u/20100713/20/601698c8-9132-4122-8336-79de256ca4e7.html
分享到:
相关推荐
java调用DOS命令java调用DOS命令java调用DOS命令java调用DOS命令
JAVA如何调用DOS命令.doc
JAVA调用DOS命令.pdf
JAVA如何调用DOS命令JAVA如何调用DOS命令JAVA如何调用DOS命令
用java新建一个以当前日期为名的文件夹,并调用dos命令copy文件和调用bat文件
VC调用dos命令总结,VC调用dos命令总结!!!
只要你会dos 命令,该程序就对君有帮助。
C#调用DOS命令方法
在C#中直接调用Dos命令,简化相关操作
调用DOS命令的例子,详细源码,以及显示出来DOS命令的源码案例,定时关机的一个小程序
易语言调用DOS命令遍历目录源码易语言调用DOS命令遍历目录源码
Java程序调用linux命令、脚本,支持程序在服务器上使用linux命令。工具类为:ProcessUtil,支持单个命令和批量命令执行函数,同时在工具类中添加了getFileLineNumByCmd函数支持通过linux命令获取文件行数的样例。
java调用shell命令.pdf
NULL 博文链接:https://htallen.iteye.com/blog/658186
java调用linux命令.用来测试使用和参考
Java调用Linux命令 调用Runtime.exec方法将产生一个本地的进程,并返回一个Process子类的实例, (注意:Runtime.getRuntime().exec(command)返回的是一个Process类的实例), 该实例可用于控制进程或取得进程的...
利用java调用DOS命令获得系统的进程列表
易语言调用DOS命令遍历目录源码,调用DOS命令遍历目录,取目录信息
提高JAVA删除文件效率,JAVA调用OS命令删除文件代码