复制一个文件夹下所有的文件和子文件夹内容到另一个文件夹

PS:涉及单个文件复制、目录的创建、递归的使用

public class CopyAllFiles {
 public static void main(String[] args) {
  copyDirectory("F:\\XXX", "F:\\YYY");
 }
 
 //复制文件的方法
 public static void copyFiles(File sourceFile, File targetFile) {
  //声明
  BufferedInputStream bis = null;
  BufferedOutputStream bos = null;
  //创建字节数组
  byte[] bs = new byte[1024 * 5];
  
  try {
   //创建对象
   bis = new BufferedInputStream(new FileInputStream(sourceFile));
   bos = new BufferedOutputStream(new FileOutputStream(targetFile));
   //读取
   int x = bis.read(bs);
   //判断
   while(x > 0) {
    //存盘
    bos.write(bs, 0, x);
    //再次读取
    x = bis.read(bs);
   }
   bos.flush();//刷新
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }finally {
   //关闭流
   if(bis != null) {
    try {
     bis.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
   if(bos != null) {
    try {
     bos.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
  
 }
 
 //复制目录的方法
 public static void copyDirectory( String sourceDirectory, String targetDirectory) {
  //创建文件对象
  File sourceFile = new File(sourceDirectory);
  File targetFile = new File(targetDirectory);
  //判断源目录
  if(!sourceFile.exists() || !sourceFile.isDirectory()) {
   System.out.println("源目录不存在!!");
   return ;
  }
  
  //判断目标目录,若不存在,则手动创建
  if(!targetFile.exists()) {
   targetFile.mkdirs();
  }
  
  //获取源目录的所有文件和目录
  File[] sourceList = sourceFile.listFiles();
  //遍历源目录
  for (int i = 0; i < sourceList.length; i++) {
   //若为文件
   if(sourceList[i].isFile()) {
    //源文件
    File sourceF = sourceList[i];
    //目标文件
    File targetF = new File(targetFile,sourceList[i].getName());
    //调用复制文件的方法
    copyFiles(sourceF, targetF);
   }
   //若为目录
   if(sourceList[i].isDirectory()) {
    //源目录
    String sourceD = sourceDirectory + File.separator + sourceList[i].getName();
    //目标目录
    String targetD = targetDirectory + File.separator + sourceList[i].getName();
    //递归调用复制目录的方法
    copyDirectory(sourceD, targetD);
   }
  }
 }
}
时间: 2024-10-25 07:36:59

复制一个文件夹下所有的文件和子文件夹内容到另一个文件夹的相关文章

获取列表中某一个文件夹下的列表项集合(不包含子文件夹对象,也不包含子文件夹中的列表项)

RT,方法如下: 1 SPListItemCollection GetSubItemsWithoutFoldersInParrentFolder(SPFolder parrent) 2 { 3 SPList list = parrent.Item.ParentList; 4 SPQuery query = new SPQuery(); 5 query.Folder = parrent; 6 query.Query = "<Where><Eq><FieldRef Na

Android程序函数 将assets文件夹下的文件复制到手机的sd卡中(包括子文件夹)

最近在做个功能是将asset文件夹下的所有文件(包括子文件)全部拷贝出来到指定目录下.所用的方法无非是用AssetManager.但是这里有个问题是也要讲子文件夹和子文件都要拷贝出来.到网上Google了下,也到baidu搜索了下,发现了很多类似问题.但好像都有问题.显然只能做到将asset直接目录下的文件拷贝出来,但子文件夹拷贝不出来,而且,碰到文件夹,会抛异常.无奈自己只好动手写了个.如下: private void CopyAssets(String assetDir,String dir

GIT 如何合并另一个远程Git仓库的文件到本地仓库里某个指定子文件夹并不丢失远程提交记录?

问题背景: 最近在重新整理手中的一个项目,目前该项目分为PC项目,手机项目,某第三方接口项目,第三方接口服务项目和手机项目 因为之前规划的原因,原来的四个项目是分两个解决方案来管理的 PC解决方案: #PC解决方案,2015年从Vss迁移到Git 一共三个项目 #F:\WWW\F.COM\WWW Flight.sln Flight.suo Web #PC项目 Qr #第三方接口项目 2015年新增项目,也使用PC解决方案但用分支进行管理,维护单独的通用项目,目前已经将通用项目分离到单独的分支进行

java+js实现展示本地文件夹下的所有图片demo

java+js实现展示本地文件夹下的所有图片demo 最近项目遇到需要实现前端通过一个按钮点击事件,弹窗浏览本地文件夹下的所有图片: 思路: - 获取到所需展示图片的本地文件夹内所有图片的文件绝对路径名称(路径+图片名称.格式名称) - 由于图片过大,对图片进行按比例压缩再展示 - 在前端展示图片 - (前端各式各样的展示--) 第一步:获取本地文件夹中的所有图片路径 java代码: package com.giscafer.common; import java.io.File; import

matlab遍历文件夹下所有图片和遍历所有子文件夹下图片

做图像处理实验,经常需要遍历当前文件下所有图片.matlab当然很早就考虑了这个问题,库函数dir就是完成这个工作的.函数返回的是一个存放所有目录下文件信息的结构体,通过遍历结构体就可以达到访问所有文件的目的了.具体实现见下面程序: imgPath = 'E:/imageData/'; % 图像库路径imgDir = dir([imgPath '*.jpg']); % 遍历所有jpg格式文件for i = 1:length(imgDir) % 遍历结构体就可以一一处理图片了 img = imre

Python获取指定文件夹下的文件名

os.walk()和os.listdir()两种方法 一.os.walk() 模块os中的walk()函数可以遍历文件夹下所有的文件. os.walk(top, topdown=Ture, onerror=None, followlinks=False) 该函数可以得到一个三元tupple(dirpath, dirnames, filenames). dirpath:string,代表目录的路径: dirnames:list,包含了当前dirpath路径下所有的子目录名字(不包含目录路径): f

git 忽略当前文件夹下的某文件

如果用TortoiesGit 那么就比较简单了,在文件上鼠标右键选择 TortoiesGit=> delete and add to ignore list 在ignore File 选择 第二项只在当前文件夹下有效,然后确定确定,系统会自动在当前文件夹下生成一个.gitignore 文件,打开里面看看是什么内容 里面就是要忽略的文件内容,其实自己创建一个.gitignore 文件然后输入相同的内容也能达到相同的效果. 还有一个问题这个gitigore 文件 我们想只让他存在于本地,那么就把gi

root用户在media文件夹下修改文件权限无效

http://blog.csdn.net/pipisorry/article/details/39649699 问题: 我想执行media文件夹下自己写的某个程序,但无法执行 media这个文件夹的所有者是root [email protected]:/#ls -ld /media drwxr-xr-x 5 root root 1024 Sep 29 00:08 /media 于是我以root的身份在终端以输入指令chmod a+x 1,回车后没反应,查询该文件夹的属性,也没有改变  为什么?

python获取文件夹下数量

import os totalSize = 0 fileNum = 0 dirNum = 0 def visitDir(path): global totalSize global fileNum global dirNum for lists in os.listdir(path): sub_path = os.path.join(path, lists) print(sub_path) if os.path.isfile(sub_path): fileNum = fileNum+1 # 统计

Linux 将文件夹下的所有文件复制到另一个文件里

如何将文件夹/home/work下的文件复制到/home/temp里面? 使用命令: cp -R /home/work/* /home/temp *表示所有文件 但是/home/work 下的隐藏文件都不会被拷贝 更好的复制的方法是用"."代替"*"就好了. cp -R /home/work/.  /home/temp 将一个文件夹复制到另一个文件夹下,例如将/home下的work文件夹复制到temp下面 命令为: cp -R /home/work  /home/t