1.该类主要代表了应用程序的运行环境。一个RunTime就代表一个运行环境。
2.RunTime类常用的方法:
(1) getRuntime():该方法用于返回当前应用程序的运行环境对象。
(2) exec(String command):该方法用于根据指定的路径执行对应的可执行文件。
(3) freeMemory():该方法用于返回Java虚拟机中的空闲内存量,以字节为单位。
(4) maxMemory():该方法用于返回Java虚拟机试图使用的最大内存量。
(5) totalMemory():该方法用于返回Java虚拟机中的内存总量。
主要是记录这个exec(String command) 方法:
该方法用于根据指定的路径执行对应的可执行文件。
简单实例:
//打开电脑上的notepad++
Runtime runtime = Runtime.getRuntime();
String command = "E:\\notepad\\notepad++.exe";
try {
runtime.exec(command);
} catch (IOException e) {
e.printStackTrace();
}
实际项目遇到的需求:导出几张mysql的业务表(几十万的数据量),生成sql文件,然后结合其余业务各种压缩成zip文件。起初走的connection查询数据去拼接INSERT INTO table_name(id,name) VALUES(3, 'SuperMan') ON DUPLICATE KEY UPDATE name='SuperMan'这样的sql文件。虽然实现了,但是处理时间有点稍微慢点,果断放弃走connection,用mysqldump用去导出sql文件,结果秒出。
String command = "cmd /c C:\\Users\\T440P\\Desktop\\sjjy20200826\\sjjy\\mysql\\bin\\mysqldump.exe -usjjy -psjjy@123! --port 3307 --no-create-info --lock-all-tables --compact --replace --complete-insert --default-character-set=utf8 --databases 库名 --tables table1 table2 ... -w "查询条件" > C:\\Users\\T440P\\Desktop\\sql.sql";
// /c是close的简写 代表cmd执行后关闭窗口,/k是keep的简写 代表cmd执行后保留窗口
InputStream in = null;
// 执行命令行
Runtime runtime = Runtime.getRuntime();
try {
// cmd /k在执行命令后不关掉命令行窗口 cmd /c在执行完命令行后关掉命令行窗口 \\表示转译符也可使用/替代,linux使用/
Process process = runtime.exec(command);
BufferedReader result = null;
String str = null;
in = process.getInputStream();
result = new BufferedReader(new InputStreamReader(in));
while ((str = result.readLine()) != null) {
System.out.println("info====>:"+str);
}
result.close();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
process返回值中可以拿到两个IO流
process.getInputStream();//读取输入日志信息
process.getErrorStream();//读取错误日志信息
mysqldump命令导出:https://blog.csdn.net/qq_35044419/article/details/108577918
mysql命令导入:https://blog.csdn.net/qq_35044419/article/details/108580622