IO流案例:1.复制多级文件夹 2.删除多级文件夹
2024-08-31 11:44:53
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();
}
}
最新文章
- JS 打印功能代码可实现打印预览、打印设置等
- DataTable在内存中的使用
- 修改 dispatchTouchEvent方法 来处理事件冲突
- cvWaitKey 如果 cvNamedWindow就不会起作用
- 支持在安卓中UI(View)的刷新功能
- winform 按顺序连续打印多个PDF文件
- spring mvc 初步接触学习笔记
- oracle稳定执行计划1
- JS 实现 Tab标签切换功能
- java J2EE学习入门
- CDialogSK - A Skinnable Dialog Class
- MySQL 存储过程参数
- 什么是数学 (R·柯朗 H·罗宾 著)
- Java语法糖初探(三)--变长参数
- 谷歌地图api訪问失败
- linux挂载根文件系统过程
- redis基础之redis-sentinel(哨兵集群)(六)
- Kafka 0.7.2 单机环境搭建
- Spark会产生shuffle的算子
- Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded.
热门文章
- android Graphics类:概述及基本几何图形绘制
- LeetCode_3Sum Closest
- java中使用反射获取pojo(实体)类的全部字段值
- 我遇到的错误curl: (7) Failed to connect to 127.0.0.1 port 1086: Connection refused
- thinkphp 防sql注入
- 微信小程序template使用
- linux内存操作--ioremap和mmap
- DedeCms如何调用Discuz论坛主题等数据方法总结
- NavigationView更改菜单icon和title颜色变化效果
- hdu 1400 Mondriaan's Dream 解题报告