java执行命令行的问题

lynnlovemin
博客专家认证
2012-08-23 05:21:18

StringBuilder result = new StringBuilder("");
result.append("cmd /c ");
result.append(" mysqldump ");
result.append(" -h192.168.1.241 ");
result.append(" -ukgoumovie ");
result.append(" -p1qaz2wsx");
result.append(" --default-character-set=gb2312 ");
result.append(" kgoumoviedb ");
result.append(" tzl_medias ");
result.append(" > ");
result.append(" e:/tzl_medias.sql");
Process p = Runtime.getRuntime().exec(result.toString());
p.waitFor();

我数据库有数据,执行了后文件也有,但是是空文件,何解?
...全文
187 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
scbb 2012-08-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

还是不要用
exec(String cmd)这个方法
用exec(String[] cmd)吧!
把命令里空格分隔的部分分别存在数组的每一项里做。

能给个代码吗?谢谢
[/Quote]


public static void main(String[] args) {

StringBuilder result = new StringBuilder("");
result.append("cmd /c ");
result.append(" mysqldump ");
result.append(" -h192.168.1.241 ");
result.append(" -ukgoumovie ");
result.append(" -p1qaz2wsx");
result.append(" --default-character-set=gb2312 ");
result.append(" kgoumoviedb ");
result.append(" tzl_medias ");
result.append(" > ");
result.append(" e:/tzl_medias.sql");

String[] cmd = new String[] {"cmd", "/c", "mysqldump", "-h", "192.168.1.241",
"-u", "kgoumovie", "-p", "1qaz2wsx", "--default-character-set=gb2312",
"kgoumoviedb", "tzl_medias", ">e:/tzl_medias.sql"};
Process p;
try {
p = Runtime.getRuntime().exec(cmd);
p.waitFor();
int exitValue = p.exitValue();
//System.out.println("exit: " + exitValue);
if (exitValue != 0) {
System.out.println(readInputStream(p.getErrorStream()));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

private static String readInputStream(InputStream is) throws IOException {

BufferedReader br = new BufferedReader(new InputStreamReader(is,
System.getProperty("sun.jnu.encoding")));

StringBuffer lines = new StringBuffer();
for (String line = br.readLine(); line != null; line = br.readLine()) {
lines.append(line);
}

return lines.toString();
}


上面代码试试看,如果出错也会把错误打印出来的。
lynnlovemin 2012-08-24
  • 打赏
  • 举报
回复
日,昨天就有问题,今天 原封不动的代码执行,成功了。。。。
lynnlovemin 2012-08-24
  • 打赏
  • 举报
回复
doc中执行是没问题的 ,就是放到程序中就导出的是空文件
2399 2012-08-24
  • 打赏
  • 举报
回复
看是不是空文件
2399 2012-08-24
  • 打赏
  • 举报
回复
应该是脚本问题,先单独在dos中执行看有没有文件
lynnlovemin 2012-08-24
  • 打赏
  • 举报
回复
我也是只有一个命令,你是说cmd /c 和mysqldump分开执行?
dawei_0937 2012-08-23
  • 打赏
  • 举报
回复
应该可以!
shizhusz110 2012-08-23
  • 打赏
  • 举报
回复
就是把你的命令一步一步做!而不是一起执行
lynnlovemin 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

还是不要用
exec(String cmd)这个方法
用exec(String[] cmd)吧!
把命令里空格分隔的部分分别存在数组的每一项里做。
[/Quote]
能给个代码吗?谢谢
scbb 2012-08-23
  • 打赏
  • 举报
回复
还是不要用
exec(String cmd)这个方法
用exec(String[] cmd)吧!
把命令里空格分隔的部分分别存在数组的每一项里做。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧