java-> 利用IO操作与递归实现目录的复制
2024-09-07 13:39:34
public class CopyDir { public static void main(String[] args) {
copyDir(new File("d:\\a"), new File("d:\\b"));
} //file1为被复制目录, file2为目标目录
public static void copyDir(File file1 ,File file2) {
//目标目录不存在则创建
if(!file2.exists()) {
file2.mkdir();
}
//将源目录所有对象取出存入File[]数组中
File[] fList =file1.listFiles();
//遍历源目录
for (File f : fList) {
//当子对象为目录时在目标目录中创建此目录
if(f.isDirectory()) {
File file =new File(file2,f.getName());
file.mkdir();
//调用自己
copyDir(f, file);
}else if(f.isFile()) {
//当子对象为文件时用字节流读取并写入目标目录中(复制)
BufferedInputStream bis = null ;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(f));
bos = new BufferedOutputStream(new FileOutputStream(new File(file2,f.getName())));
int len = 0;
byte[] bytes = new byte[1024];
while((len = bis.read(bytes)) != -1) {
bos.write(bytes, 0, len);
}
} catch (IOException e) {
throw new RuntimeException("操作失败!");
}finally {
try {
bis.close();
bos.close();
} catch (IOException e) {
throw new RuntimeException("关闭失败!");
}
}
}
}
}
}
最新文章
- iOS之ProtocolBuffer搭建和示例demo
- canvas应用-思维导图
- HDU 1171 Big Event in HDU 多重背包二进制优化
- VS中查看/修改Dialog控件TAB顺序的方法
- shell中exec解析(转)
- Python闭包详解
- iOS 的 APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸?
- scss 学习笔记
- vue组件大集合 component
- Java编程思想总结笔记The first chapter
- quartz定时任务cron表达式
- 又是一个Notepad++的问题
- 将html前端代码提取公因数(5)
- 补充:CSS选择器样式的规范!
- python 使用read_csv读取 CSV 文件时报错
- android listview优化:滑动时颜色错乱问题
- HDU 3787 A+B 模拟题
- ZOOKEEPER解惑[转]
- oracle(四) 常用语句
- 【清华集训 2017】小Y的地铁 [模拟退火]