刚来到新公司,第一次做需求发现上线是手动打版,在 apache-tomcat-7.0.40/webapps 目录里 搜索 改过的文件 ,然后复制到 项目的空 文件夹里上传到服务器,一个一个找好麻烦,最主要的是目录太深,害怕搞错。 于是 萌生用java 写一个工具类,把文件名写上,自动创建没有的文件夹,同时把文件复制过去!
以下是代码:
package co.wz.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CopyFile { public static void main(String[] args) { //要复制的文件的名字 多个之间用 & 隔开 String finame="AcctxnBookDao.class"; //要把项目文件夹复制到的目录 String goalFile = "C:/Epath/"; //搜索复制文件的目录 File reso = new File("C:/Dpath/GZ/apache-tomcat-7.0.40/webapps/pm"); String fis[]=finame.split("&"); for(String fi:fis){ OperatorFile(reso,goalFile,fi); } } private static void OperatorFile(File reso,String goalFile,String fi){ File[] listFiles = reso.listFiles(); for (File file:listFiles){ if(file.isDirectory()){ //如果是一个目录继续遍历 OperatorFile(file,goalFile,fi); }else{ cpFile(file,goalFile,fi); } } } /** *@param file 要复制的文件 * **/ //复制文件 private static void cpFile(File file,String goalFile,String fi){ String file2name=file.getAbsolutePath(); String filenames []=file2name.split("\\\\"); String filename =filenames[filenames.length-1]; if(filename.equals(fi)){ //如果存在复制到工作目录 String dirname =file2name.replace("C:\\Dpath\\GZ\\apache-tomcat-7.0.40\\webapps\\",goalFile); //创建文件目录 File fe=new File(dirname.replace(filename,"")); fe.mkdirs(); //然后将文件复制过去 FileInputStream read=null; FileOutputStream wire=null; try { read = new FileInputStream(file2name); wire =new FileOutputStream(dirname); //写入 byte [] data=new byte[1024]; while(read.read(data)!=-1){ //写 wire.write(data); wire.flush(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(read!=null) try { read.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(wire!=null) try { wire.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } }
