1.得到系統的類型.不同的系統有不同的檔案分割符號.
public static boolean isLinux(){
String OS = System.getProperty("os.name").toLowerCase();
if (OS.indexOf("windows") > -1) {
return false;
}
else{
return true;
}
}
2.根據不同的系統產生不同的命令:
//表名
String dbs = "ACTION DDINFO DEVICE DEVICEALARM DEVICEINFO DEVICELOG ";
List command=new ArrayList();
if (isLinux) {
command.add(exec_path+ "mysqldump");
command.add("--opt");
command.add("--user=root");
command.add("--lock-all-tables=true");
command.add("--result-file=" + dumpedFilepath+File.separator+SERVER_BACKUP_SQL_FILE);
command.add("orca");
String[] str=dbs.split(" ");
for(int i=0;i<str.length;i++)
command.add(str[i]);
}
else {
command.add("\""+exec_path+ "mysqldump\"");// is this work?
command.add("--opt");
command.add("--user=root");
command.add("--lock-all-tables=true");
command.add("--result-file=" + dumpedFilepath+File.separator+SERVER_BACKUP_SQL_FILE);
command.add("orca");
String[] str=dbs.split(" ");
for(int i=0;i<str.length;i++)
command.add(str[i]);
3.運行命令
得到Runtime
private Runtime cmd = Runtime.getRuntime();
Process p = cmd.exec((String[])command.toArray(new String[0]),null);
String line;
BufferedReader br=new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ( (line = br.readLine()) != null)
log.error("<<<<<<<" + line);
Process 是為了顯示錯誤資訊