Cómo ejecutar comandos de Linux desde código Java
El siguiente método admite llamadas a la línea de comandos en sistemas Linux y Windows. Al mismo tiempo, se utilizó el kit de herramientas apache lang commons-lang3-3.1.jar para determinar el tipo de sistema operativo y también se utilizó log4j-1.2.16.jar para imprimir el registro. En cuanto a si rm -rf puede eliminar archivos correctamente, puede llamar manualmente a la línea de comando para intentarlo.
¿privado?String?callCmd(String?cmd)?throws?InterruptedException,?UnHandledOSException,?ExecuteException?{
if(SystemUtils. IS_OS_LINUX){
intentar?{
/?Usar Runtime para ejecutar comandos y generar objetos de proceso
Process?process?=?Runtime.getRuntime().exec(
new ? Cadena[]? {?" /bin/sh",?" -c",?cmd?});
int?exitCode?=?process.waitFor();
/?Obtenga el flujo de salida del resultado del comando
InputStream?is?=?process.getInputStream();
/?Utilice la clase de flujo de salida de lectura para leer p>
InputStreamReader?isr?=?new?InputStreamReader(is);
/?Leer líneas usando un buffer
BufferedReader?br?=?new?BufferedReader(isr ) ;
String?line?=?null;
StringBuilder?sb?=?new?StringBuilder();
mientras?((line?= br.readLine())?{
System.out.println(línea);
sb.append(línea);
}
is.close();
isr.close();
br.close();
¿regresar?{
System.err.println("NullPointerException?"?+?e.getMessage());
logger.error(cmd);
}?catch?(java .io.IOException?e)?{
System.err.println("IOException?"?+?e.getMessage());
}
throw?new?ExecuteException(cmd?+? "¡Error de ejecución! ") )
}
if(SystemUtils.IS_OS_WINDOWS){
¿Proceso?proceso;
¿probar?{
//process?=?new?ProcessBuilder(cmd).start();
String[]?param_array?=?cmd.split("[\s]+"); p> p>
ProcessBuilder?pb?=?new?ProcessBuilder(param_array);
Process?=?pb.start();
/*process=Runtime. getRuntime( ).exec(cmd);*/
int?exitCode?=?Process.
waitFor();
InputStream?is?=?process.getInputStream();
InputStreamReader?isr?=?new?InputStreamReader(es);
BufferedReader?br?=?new?
StringBuilder?sb?=?new?{
System.out.println(line);
sb.append (línea);
}
is.close();
isr.close();
br.close() ;
retorno?{
//?TODO?Auto-generado?catch?block
e.printStackTrace();
}
throw?new?ExecuteException(cmd?+?" ¡Error de ejecución!") )
}
throw?new?UnHandledOSException("Este sistema operativo no es compatible");
}