java如何连同目录复制一个文件 部署到服务器的clas文件的工具类

来源:互联网 发布:为什么一淘比淘宝便宜 编辑:程序博客网 时间:2024/05/24 06:46

     刚来到新公司,第一次做需求发现上线是手动打版,在 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();
       }
     }
   }
   
 }
 }
 
 
}


0 0
原创粉丝点击