- import java.io.*;
- public class CopyDir {
- /**
- * 将"E:\\MyEclipse 10\\io\\src\\files";下的"copyDir文件夹"复制到"E:\\java\\workspace";
- * 把.java文件改成.txt文件
- */
- private static final String P = File.separator;//路径分隔符
-
- public static void main(String[] args)throws IOException
- {
- String dest = "E:\\java\\workspace";
- String src = "E:\\MyEclipse 10\\io\\src\\files";
- String name = "copyDir";
- copyDir(dest,src,name,new MyFilenameFilter());
- }
-
- //拷贝单个文件
- public static void copy(String dest,String src)throws IOException
- {
- BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
- BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(dest));
- int ch = -1;
- while((ch = bis.read())!=-1)
- {
- bos.write((byte)ch);
- }
- bis.close();
- bos.close();
- }
-
- //判断arr数组里是否包含t元素;用于区分.java文件和其他文件
- public static <T> boolean isContains(T t , T[] arr)
- {
- for(int i = 0;i<arr.length;i++)
- {
- if(t.equals(arr[i]))
- return true;
- }
- return false;
- }
-
- //建立多级文件夹
- public static void mkdirs(String dest)
- {
- new File(dest).mkdirs();
- }
- //复制文件夹
- public static void copyDir(String dest,String src,String name,MyFilenameFilter mft)throws IOException
- {
- //判断源文件夹是否存在;
- File df = new File(dest+P+name);
- if(!df.exists())
- mkdirs(dest+P+name);//不存在则建立该文件夹
- File sf = new File(src+P+name);
- File[] files = sf.listFiles();//该文件夹下所有文件组成的数组
- File[] javafiles = sf.listFiles(mft);//该文件夹下所有.java文件组成的数组
- for(int i = 0 ; i<files.length;i++)
- {
- File file = files[i];
- String oldname = file.getName();
- String newname = null;
- if(file.isDirectory())//如果是文件夹,先建立,然后进入递归;
- {
- mkdirs(dest+P+name+P+oldname);
- copyDir(dest+P+name,src+P+name,oldname,mft);
- }
- else if(file.isFile())//是文件的情况
- {
- if(isContains(file,javafiles))//该文件是.java文件
- newname = oldname.split(".java")[0]+".txt";//该成新文件名
- else
- newname = oldname;//不是.java文件,文件名不变
- copy(dest+P+name+P+newname,src+P+name+P+oldname);//最后复制该文件;
- }
- }
- }
- }
- //用于过滤.java文件
- class MyFilenameFilter implements FilenameFilter
- {
- public boolean accept(File dir,String filename)
- {
- return filename.endsWith(".java");
- }
- }
复制代码
|