刚来到新公司,第一次做需求发现上线是手动打版,在 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;
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();
}
}
}
}
}
}
//要复制的文件的名字 多个之间用 & 隔开
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();
}
}
}
}
}
}