使用Runtime.getRuntime().exec()的方法调用本地mysqldump.exe备份还原数据库(路径中含有空格和数字)的方法

这个问题花费我两天时间,上网搜中文的资料大都换另一种方式解决的。说是在java中cmd不支持重定向,采用的另一种方式是得到Runtime.getRuntime().exec()的输入流,然后写到一个文本中。这个方法也不错(本人没有使用)。


今天要介绍的方法是调用本地的mysqldump.exe重定向的方式备份数据库。首先要说明的是mysqldump.exe在哪里不重要,重要的是要处理好路径中的非法字符


那我的代码做例子吧。


上面我的mysqldump.exe的位置在本地的

C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\ui\WEB-INF\data\mau


直接调用肯定是不行的,因为路径中有空格。

解决方法是把空格换成

C:/Progra~1/Apache~1/Tomcat~1.0/webapps/ui/WEB-INF/data/mau

的样子。

这里分两种情况:

  • Program Files

类似这种的直接保留前六个字母,再加“~1”就行了

  • Tomcat 6.0 、tomcattomcat 6.0、tom 6.0、to 6.0

这个需要保留“.0”,最终换成Tomcat~1.0 、Tomcat~1.0 、tom6~1.0、to6~1.0

规律一看都能看明白。但是要用代码实现对于我来说挺麻烦的。这里就不说我写的代码了。高手可以留下代码共后人瞻仰,我是没有这个水平。><


最终调用的结果:

str = "cmd /c C:/Progra~1/Apache~1/Tomcat~1.0/webapps/ui/WEB-INF/data/mau/mysqldump.exe -h127.0.0.1 -uroot -p1234 ui > C:/Progra~1/Apache~1/Tomcat~1.0/webapps/ui/WEB-INF/data/db/20120720180755.sql";



调用:

Process p = Runtime.getRuntime().exec(str);




你可能感兴趣的:(JavaEE,Extjs4,java)