java程序实现“深度复制文件夹"

public static void main(String[] args) throws Exception{
        	//定义集合存储Java文件的名字
                ArrayList<File> al = new ArrayList<File>();
              //源文件路径
                File src = new File("d:\\1");
              //目的文件路径
                File des = new File("d:\\2");
                if(des.exists())	
                	myDel(des);                           
                des.mkdirs();
              //将源文件中的Java文件的名字存入到集合中
                fileToList(src,al); 
                
              //高级for循环遍历集合中Java文件的名字
                for(File fileName : al){ 
                	//将源文件中的Java文件存入到目的文件夹中
                    writeTofile(src,fileName.getParentFile(), des, fileName);            
                }
        }
        
        
        //将源文件中的Java文件的名字存入到集合中
        public static void fileTolist(File file,List<File> list){
        	//获取源文件夹中的文件
        	File[] files = file.listFiles();              
              //遍历文件并将文件的Java文件的名字存入到集合中
    		for(File f : files)
    		{
    			if(f.isDirectory()){
    				System.out.println("dir "+file.getName());
    				fileTolist(f,list);	//递归调用本身
    			}
    			else
    			{
    				System.out.println("file "+file.getName());
    				if(file.getName().endsWith(".java"))
    					list.add(f.getAbsoluteFile());
    			}
    		}
        }
    	public static void fileToList(File dir,List<File> list)
    	{
    		File[] files = dir.listFiles();

    		for(File file : files)
    		{
    			if(file.isDirectory()){
//    				System.out.println("dir "+file.getName());
    				fileToList(file,list);	//递归调用本身
    			}
    			else
    			{
//    				System.out.println("file "+file.getName());
    				if(file.getName().endsWith(".java"))
    					list.add(file);
    			}
    		}
    	}
        
        public static void myDel(File f){
        	File[] file = f.listFiles();
        	for(File fl:file){
            	if(fl.isDirectory()){
            		myDel(fl);
            	}	
            	fl.delete();
        	}
        	f.delete();

        }
        //将源文件中的Java文件存入到目的文件夹中
        public static void writeTofile(File src,File srcAll,File des, File fileName)throws Exception{
	            String s=src.getAbsolutePath();
	            String sAll = srcAll.getAbsolutePath();
	            String str=new String(sAll.toCharArray(),s.length(),sAll.length()-s.length());
	            String fileNameToString  =fileName.getName().replace(".java", ".txt");
                //定义带缓冲的读对象
                BufferedReader bfr = new BufferedReader(new FileReader(new File(srcAll, fileName.getName())));
                File newFile = new File(des.getAbsolutePath()+str);
                if(!newFile.exists())
                	newFile.mkdirs();
                System.out.println(newFile);
                //定义写对象
                BufferedWriter bfw = new BufferedWriter(new FileWriter(new File(newFile,fileNameToString)));
                //单行内容临时存放处
                String line = null;
                //单行读写
                while((line=bfr.readLine())!=null){
                        bfw.write(line);
                        bfw.newLine();
                        bfw.flush();
                }
                //关闭读写对象                
                bfw.close();
                bfr.close();
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值