java调用linux 命令
java 在linux环境下调用 linux命令
/** * 完成解压给定的数据包功能 * @param ftpDataDir * @param fileName * @return 返回ok 表示解压完成 返回""表示减压失败 */public String decompressFile(String ftpDataDir,String fileName){String results = "";BufferedReader in = null;try {File file = new File(ftpDataDir,fileName);boolean isFile = file.isFile();if (isFile) {// 将fileName减压到ftpDataDir目录下 x文件完整路径释放 ,-r递归子目录,-o解压的目录,-aoa 覆盖已经存在的String fileNameS = fileName.substring(0, fileName.lastIndexOf("."));String commands = "7za x "+ftpDataDir+""+fileName+" -r -o"+ftpDataDir+""+fileNameS+" -aoa";log.info("解压缩文件命令:"+commands);Runtime runtime = Runtime.getRuntime();Process process = runtime.exec(commands);log.info(commands);//in = new BufferedReader(newprocess.getInputStream());in = new BufferedReader(new InputStreamReader(process.getInputStream()));String str = null; String[] strArray = null; String isOk = "Everything is Ok"; while ((str = in.readLine()) != null) { // 如果返回 "Everything is Ok" 表示减压成功 log.info("---"+str); if (str.equals(isOk)) { results = "ok"; return results;} }}else{// 不是一个标准文件log.info(ftpDataDir+fileName+"不是一个标准文件");}} catch (Exception e) {System.out.println("解压给定的数据包功能出错!");log.error("解压给定的数据包功能出错!:"+ftpDataDir+File.separator+fileName);e.printStackTrace();}finally{if (in != null ) {try {in.close();} catch (IOException e) {e.printStackTrace();}}}return results;}
?
?
/** * 完成备份数据包功能,即把fileName从ftpDataDir目录备份到backupDir目录 * @param ftpDataDir * @param fileName * @param backupDir * @return 返回ok 表示解压完成 返回""表示减压失败 */public String backupFile(String ftpDataDir,String fileName,String backupDir){String results = "";BufferedReader in = null;try {File file = new File(ftpDataDir,fileName);boolean isFile = file.isFile();if (isFile) {Runtime runtime = Runtime.getRuntime();// 先复制 再删除 cp -adfpr /var/ftp/test7z/FileUtil.java /var/ftp/xinhua/xinhua/String cpCommand = "cp -adfpr "+ftpDataDir+""+fileName+" "+backupDir;log.info("备份命令:"+cpCommand);Process cpProcess = runtime.exec(cpCommand);System.out.println(cpCommand);// 验证是否复制成功String lsCommand = "ls "+backupDir+""+fileName;Process lsProcess = runtime.exec(lsCommand);log.info(lsCommand);//in = new BufferedReader(newprocess.getInputStream());in = new BufferedReader(new InputStreamReader(lsProcess.getInputStream()));String str = null; while ((str = in.readLine()) != null) { // 如果返回 fileName 表示已经移动到备份的目录了 System.out.println("---"+str); if (str.equals(backupDir+""+fileName)) { results = "ok"; break;} } if ("ok".equals(results)) {// 备份成功 删除ftp目录中的文件 //String rmCommand = "rm -f "+ftpDataDir+""+fileName;//Process rmProcess = runtime.exec(rmCommand);//log.info(rmCommand);deleteFile4Linux(ftpDataDir+""+fileName);// 删除我们减压缩 出来的文件夹及其文件String fileNameS = fileName.substring(0, fileName.lastIndexOf("."));//String rmCommand2 = "rm -rf "+ftpDataDir+""+fileNameS;//Process rmProcess2 = runtime.exec(rmCommand2);deleteFile4Linux(ftpDataDir+""+fileNameS);//log.info(rmCommand2);}else {results="Failure";}}else{// 不是一个标准文件log.info("不是一个标准文件");}} catch (Exception e) {System.out.println("备份文件出错:"+ftpDataDir+"/"+fileName);log.error("备份文件出错!:"+ftpDataDir+"/"+fileName);e.printStackTrace();}finally{if (in != null ) {try {in.close();} catch (IOException e) {e.printStackTrace();}}}return results;}
?
/** * 利用linux 命令删除文件 * @param ftpDataDir 文件路径 例如 /usr/local/totm.xml * @return * @throws Exception */public void deleteFile4Linux(String ftpDataDir)throws Exception{Runtime runtime = Runtime.getRuntime();// 备份成功 删除ftp目录中的文件 String rmCommand = "rm -rf "+ftpDataDir;Process rmProcess = runtime.exec(rmCommand);log.info("------"+rmCommand);}
?