package copy;
/*
需求:复制多级文件夹
复制d:\\itcast(包含文件和子文件夹)到模块目录下
分析:
d:\\itcast
a.txt
b.txt
javaweb
a.xml
b.xml
模块\\itcast
javaweb
a.xml
b.xml
a.txt
b.txt
思路:
1.判断源文件是目录还是文件
2.是目录:
1.源目录名+目的目录,创建新目录File对象
2.判断新目录File是否存在,不存在则创建
3.获取源目录文件列表
4.遍历得到每个源文件对象
5.递归调用copyFolder方法
3.是文件:
复制源文件到目的目录
*/ import java.io.*; public class CopyFolder {
public static void main(String[] args) throws IOException {
//创建源目录
File srcFolder = new File("d:\\itcast");
//创建目的目录
File dstFolder = new File("day10Home"); //调用复制方法,复制目录或文件
copyFolder(srcFolder, dstFolder);
} /**
* 文件是否存在的检查工作,应该由方法调用者保证。
* @param src
* @param dst
* @throws IOException
*/
private static void copyFolder(File src, File dst) throws IOException {
//1.是目录
if(src.isDirectory()){
//1.源目录名+目的目录,创建新目录File对象
File newFolder = new File(dst, src.getName()); //2.判断新目录File是否存在,不存在则创建
if(!newFolder.exists())
newFolder.mkdir(); //3.获取源目录文件列表
File[] fileArray = src.listFiles(); //4.遍历得到每个源文件对象
for(File srcFile : fileArray){
//5.递归调用copyFolder方法
copyFolder(srcFile, newFolder);
}
}else{
// 2.是文件,根据目的目录+源文件名,创建新文件
File newFile = new File(dst, src.getName());
copyFile(src, newFile);
}
} private static void copyFile(File srcFile, File newFile) throws IOException {
// 创建字节缓冲流对象
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile)); // 读写数据,一次读写一个字节数组
byte[] bys = new byte[1024];
int len;
while((len = bis.read(bys)) != -1){
bos.write(bys, 0, len);
} // 释放资源
bos.close();
bis.close();
}
}

  案例2:删除多级文件夹

 package deletefolder;

 import java.io.File;

 /*
需求:
将d:\\itcast多级文件夹删除
d:\\itcast
javaweb
a.xml
a.txt
b.txt
思路:
1.是否是目录
是目录:
2.获取文件列表
3.遍历文件列表得到每个文件对象
4.递归调用删除方法,删除目录中的每一项内容
2.直接删除src,此时src要么是空目录,要么是文件。 */
public class DeleteFolder {
public static void main(String[] args) {
//创建要删除的多级目录
File file = new File("day10Home\\itcast"); //调用方法删除多级目录
deleteFolder(file); } private static void deleteFolder(File src) {
//1.是否是目录
if(src.isDirectory()){
//2.获取文件列表
File[] fileArray = src.listFiles(); //3.遍历文件列表得到每个文件对象
for(File file : fileArray){
//4.递归调用删除方法,删除目录中的每一项内容
deleteFolder(file);
}
}
//5.将src删除,此时src要么是空目录,要么是文件。
src.delete();
}
}

最新文章

  1. JS 打印功能代码可实现打印预览、打印设置等
  2. DataTable在内存中的使用
  3. 修改 dispatchTouchEvent方法 来处理事件冲突
  4. cvWaitKey 如果 cvNamedWindow就不会起作用
  5. 支持在安卓中UI(View)的刷新功能
  6. winform 按顺序连续打印多个PDF文件
  7. spring mvc 初步接触学习笔记
  8. oracle稳定执行计划1
  9. JS 实现 Tab标签切换功能
  10. java J2EE学习入门
  11. CDialogSK - A Skinnable Dialog Class
  12. MySQL 存储过程参数
  13. 什么是数学 (R·柯朗 H·罗宾 著)
  14. Java语法糖初探(三)--变长参数
  15. 谷歌地图api訪问失败
  16. linux挂载根文件系统过程
  17. redis基础之redis-sentinel(哨兵集群)(六)
  18. Kafka 0.7.2 单机环境搭建
  19. Spark会产生shuffle的算子
  20. Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded.

热门文章

  1. android Graphics类:概述及基本几何图形绘制
  2. LeetCode_3Sum Closest
  3. java中使用反射获取pojo(实体)类的全部字段值
  4. 我遇到的错误curl: (7) Failed to connect to 127.0.0.1 port 1086: Connection refused
  5. thinkphp 防sql注入
  6. 微信小程序template使用
  7. linux内存操作--ioremap和mmap
  8. DedeCms如何调用Discuz论坛主题等数据方法总结
  9. NavigationView更改菜单icon和title颜色变化效果
  10. hdu 1400 Mondriaan's Dream 解题报告