
Runtime是一个与JVM运行时环境有关的类,这个类是Singleton的。
Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法。
Runtime.exec()
public Process exec(String[] cmdarray) throws IOException
这个方法中cmdArray是一个执行的命令和参数的字符串数组,数组的第一个元素是要执行的命令往后依次都是命令的参数。
Runtime.getRuntime().exec()在不同环境下的使用方法:
//Windows XP, Windows 2000
Runtime.getRuntime().exec(new String[] {"cmd /c command"})
//Windows 98
Runtime.getRuntime().exec(new String[] {"command /c command"})
//Linux
Runtime.getRuntime().exec(new String[] {"/bin/sh", "-c", command"})
Java实现mysql数据库备份功能完整代码:
public class MysqlExport {
public static void main(String[] args) {
String username = "mysql_user";
String password = "mysql_pwd";
String server = "toughhou.gotoftp3.com";
String port = "3306";
String db = "houxiaolongr";
String exportPath = "/home/tough/workspace/MysqlUtility/src/mysql/export.sql";
//构建mysqldump命令"mysqldump -uroot -proot -h127.0.0.1 dbname > export.sql"
String exportCMD = "mysqldump " + "-u" + username + " -p" + password + " -h" + server + " " + db + " > " + exportPath;
Runtime runtime = Runtime.getRuntime();
try {
//-c告诉它读取随后的字符串,exportCMD是要运行的命令。
runtime.exec(new String[] {"/bin/sh","-c",exportCMD});
} catch (IOException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}
因为第一次用RUntime.getRuntime.exec()方法,不知道Windows/Linux平台下使用方法是不同的。直接用了runtime.exec("cmd /c" + exportCMD);报如下异常:
java.io.IOException: Cannot run program "cmd": error=13, Permission denied
因为,在Linux下,Runtime.getRuntime().exec("cmd /c" + exportCMD)执行的命令"cmd /c"找不到。