java IO之递归实现文件夹(目录)的拷贝

将一个文件夹(目录)拷贝到另一个文件夹(目录)可以分为文件的拷贝和文件夹(目录)的创建

public class FileTools {
//拷贝文件的方法
 public static void copyfile(File sour, File tar) throws IOException {
  BufferedInputStream bis = new BufferedInputStream(new FileInputStream(sour));
  BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(tar));//创建文件 
  int i;
  while ((i = bis.read()) != -1) {
   bos.write(i);
  }
  bis.close();
  bos.close();
 }
//拷贝文件夹(目录)的方法
 public static void copydir(String source, String target) throws IOException {
  File sour = new File(source);
  File tar = new File(target);
  if (sour.isFile()) { // 判断为文件则进行文件拷贝
   FileTools.copyfile(sour, tar);
  } else {//如果问文件夹则在目标文件夹中创建在文件夹再进行遍历以及递归调用
   tar.mkdirs();// 确保路径存在
   for (File f : sour.listFiles()) {
   File file = new File(tar.getAbsolutePath(),f.getName());//构建一个与source相同路径的目标文件对象   
   copydir(f.getAbsolutePath(),file.getAbsolutePath());
   }
  }
 }
}
主方法:
public static void main(String[] args) throws Exception { 
  File sour = new File("e:/source");
  File tar = new File("e:/target");
  if(sour.isDirectory())//实现整个图片文件夹 (目录)的拷贝
   tar =  new File("e:/target",sour.getName());
  FileTools.copydir(sour.getAbsolutePath(),tar.getAbsolutePath());
 }



猜你喜欢

转载自blog.csdn.net/m_target/article/details/80456410