A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 湛添友 中级黑马   /  2014-5-18 22:13  /  1487 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
//复制一个带内容的文件夹
/*
* 我是思路是:先用递归的方法 获取文件夹中所有文件的路径名 存入集合中  然后再遍历集合的时候用流写入指定目录
*
*
* 这个方法我觉得好笨  有没有好一点的办法
*/
public class CopyDir {
public static void main(String args[]) throws IOException{
Copy c=new Copy();
  c.copy("D:\\书\\吉他\\一百首高清初级弹唱谱,最简和弦", "D:\\abc");
}
}
class Copy{

public void copy(String dirName,String destPath) throws IOException{
  File dir = new File(dirName);
  File dest= new File(destPath);
  if(!dest.exists())
  {
   System.out.print("目标路径不存在");
   return;
  }
  if(!dir.exists()||(!dir.isDirectory())){
   System.out.println("文件夹不存在或者不合法");
   return;
  }
  List<String> list = new ArrayList<String>();
  listFile(dir,list);
  String pathName = dir.getName();
  String s1 = dirName.substring(dirName.lastIndexOf("\\")+1);
//  System.out.println(s1);
  for(String s:list){
   BufferedInputStream bis = new BufferedInputStream(new FileInputStream(s));
   String fileName=s.substring(s.lastIndexOf("\\")+1);
   String s2 = s.substring(dirName.length());
   String s3 = s2.substring(0,s2.lastIndexOf("\\"));
   String s4=destPath+"\\"+s1+s3;
   File destDir = new File(s4);
   if(!destDir.exists()){
    destDir.mkdirs();
   }
   BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(s4+"\\"+fileName));
   int len = 0;
   while((len=bis.read())!=-1){
    bos.write(len);
   }
   bis.close();
   bos.close();
  }
  


}
public void listFile(File dir,List<String> list){
  File[] files=dir.listFiles();
  for(File f:files){
   if(f.isDirectory()){
    listFile(f,list);
   }else{
    list.add(f.getAbsolutePath());
   }
  }
}
}







点评

代码最好写在代码输入框里  发表于 2014-5-23 09:19

评分

参与人数 1技术分 +1 收起 理由
天涯追梦 + 1

查看全部评分

5 个回复

倒序浏览
代码有点乱,不想看懂
回复 使用道具 举报
怪我没有注释
回复 使用道具 举报
你把这个程序想得太麻烦了,要往简单想。
遍历源文件夹,指定目标文件夹,遍历到一个文件夹就在目标文件夹中创建一个文件夹,然后递归,
遍历到一个文件就在目标文件夹中复制一个文件。
完事……
回复 使用道具 举报
我也觉得代码好凌乱的感觉。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马