欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

copy文件到指定目录下面工具类

程序员文章站 2022-05-23 09:49:09
...
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * copy 文件到指定目录下面,并创建文件目录
 * @author wxh64788665@yahoo.cn 20120818:begin
 *
 */
public class GenerateDirecoryUtil {

	/**
	 * web 项目的class路径
	 */
	private final static File fileClass=new File("D:/eclipseForWeb/code/WebApp/WebContent/WEB-INF/classes");
	/**
	 * web 项目的类路径
	 */
	private final static File fileCommon=new File("D:/eclipseForWeb/code/WebApp/WebContent");
	/**
	 * copy的文件存在于这个目录下面,不必创造这个目录
	 */
	private final static File fileLocation=new File("D:/generate");
	/**
	 * class文件路径
	 */
	private final static String STRINGDIRECORYClass[] = { "com.bq.action.ArticleActionTest.class","com.bq.action.JxlTestAction.class"};
	/**
	 * 其它资源文件路径
	 */
	private final static String STRINGDIRECORYCommon[] = { "pages.vba.Combine_vba.jsp"};

	
	public static void main(String[] args) throws Exception {
		GenerateToDirecory();
	}
	
	public static void GenerateToDirecory() throws Exception
	{

		/**
		 * class文件路径中的.替换成/
		 */
		for (int i = 0; i < STRINGDIRECORYClass.length; i++)
			STRINGDIRECORYClass[i] = STRINGDIRECORYClass[i].replace(".", "/");
		/**
		 * 其它资源文件路径中的.替换成/
		 */
		for (int j = 0; j < STRINGDIRECORYCommon.length; j++)
			STRINGDIRECORYCommon[j] = STRINGDIRECORYCommon[j].replace(".", "/");
	
		
		/**
		 * class文件路径中的最后的/替换成.因为最后是class文件,不必生成目录
		 */
		for(int k=0;k<STRINGDIRECORYClass.length; k++)
		{
			int m=STRINGDIRECORYClass[k].lastIndexOf("/");
			String oldStr=STRINGDIRECORYClass[k].substring(m, STRINGDIRECORYClass[k].length());
			String newStr=STRINGDIRECORYClass[k].substring(m+1);
			STRINGDIRECORYClass[k]=STRINGDIRECORYClass[k].replaceAll(oldStr, "."+newStr);
		}
		/**
		 *  其它资源文件路径中的路径中的最后的/替换成.因为最后是class文件,不必生成目录
		 */
		for(int n=0;n<STRINGDIRECORYCommon.length; n++)
		{
			int j=STRINGDIRECORYCommon[n].lastIndexOf("/");
			String oldStr=STRINGDIRECORYCommon[n].substring(j, STRINGDIRECORYCommon[n].length());
			String newStr=STRINGDIRECORYCommon[n].substring(j+1);
			STRINGDIRECORYCommon[n]=STRINGDIRECORYCommon[n].replaceAll(oldStr, "."+newStr);
		}
		
	
		/**
		 * 将日期转换成指定格式
		 */
		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-mm-dd");
		String sdf=simpleDateFormat.format(new Date());
		
		/**
		 * 循环将指定文件copy到相应的目录下面
		 */
		for (int l = 0; l < STRINGDIRECORYClass.length; l++) {
			File f = new File(new File(fileLocation,sdf),STRINGDIRECORYClass[l]);
			if (!f.getParentFile().exists())
				f.getParentFile().mkdirs();
			copyFile(new File(fileClass,STRINGDIRECORYClass[l]),f);
		}
		
		/**
		 * 循环将资源文件copy到相应的目录下面
		 */
		for (int k = 0; k < STRINGDIRECORYCommon.length; k++) {
			File f = new File(new File(fileLocation,sdf),STRINGDIRECORYCommon[k]);
			if (!f.getParentFile().exists())
				f.getParentFile().mkdirs();
			copyFile(new File(fileCommon,STRINGDIRECORYCommon[k]),f);
		}
	}
	
	/**
	 * 
	 * @param fileIn 要被copy的文件
	 * @param fileOutPut 将文件copy到那个目录下面
	 * @throws Exception
	 */
	private static void copyFile(File fileIn,File fileOutPut) throws Exception
	{
		FileInputStream fileInputStream=new FileInputStream(fileIn);
		FileOutputStream fileOutputStream=new FileOutputStream(fileOutPut);
		byte[] by=new byte[1024];
		int len;
		while((len=fileInputStream.read(by))!=-1)
		{
			fileOutputStream.write(by, 0, len);
		}
		fileInputStream.close();
		fileOutputStream.close();
	}

}