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); }