-
【JAVA】编程(6)--- 应用IO流拷贝文件夹(内含多个文件)到指定位置
此程序应用了:
File 类,及其常用方法;
FileInputStream,FileOutputStream类及其常用方法;
递归思维;
package com.bjpowernode.javase.io;
import java.io.*;
public class IOTest {
public static void main(String[] args) {
//拷贝源路径:...\\pra\\...
File srcFile=new File("C:\\java-prictice\\javaseplus\\pra");
//拷贝目标:...\\c\\...
File destFile=new File("C:\\a\\b\\c");
//若拷贝目标路径不存在,创建多级文件夹
if (!destFile.exists()){
destFile.mkdirs();
}
//调用拷贝方法
copyDir(srcFile,destFile);
}
private static void copyDir(File srcFile,File destFile){
//声明空指针引用
FileInputStream fis=null;
FileOutputStream fos=null;
//递归的结束条件(拷贝源是文件,没有子文件了)
if (srcFile.isFile()){
try {
//字节输入流绑定拷贝源,字节输出流绑定拷贝目标
fis=new FileInputStream(srcFile);
//获取不包含上级路径的文件名
String scrDir=srcFile.getName();
//在拷贝目标的路径后 + “\\拷贝源的文件名”(不包含上级路径)
fos=new FileOutputStream(destFile.getAbsolutePath().endsWith("\\")?destFile.getAbsolutePath():(destFile.getAbsolutePath()+"\\"+scrDir));
//一次最多读取1MB
byte [] bytes=new byte[1024*1024];
int readCound;
//文件拷贝完成
while ((readCound=fis.read(bytes))!=-1){
fos.write(bytes);
}
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
if (fis!=null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fos!=null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return;
}
//能到这说明是文件夹,获取文件夹下的所有子文件
File [] files=srcFile.listFiles();
for (File file:files) {
//子文件若是文件夹,则新建此文件夹
if (file.isDirectory()){
String srcDir=file.getAbsolutePath();
String destDir=(destFile.getAbsolutePath().endsWith("\\")?destFile.getAbsolutePath():destFile.getAbsolutePath()+"\\"+srcDir.substring(3));
File newFile=new File(destDir);
}
//递归
copyDir(file,destFile);
}
}
}
效果展示:
运行前:
运行后:
心得:
递归方法中的 copyDir ( file , destFile ) ; // 内部执行的拷贝顺序:
/*拷贝顺序:
1.pra的第一个子文件夹(若是文件则进行pra下一个子文件的拷贝)
2.上一个子文件夹的第一个子文件夹(若是文件则返回步骤1)
3.上一个子文件夹的第一个子文件夹(若是文件则返回步骤2)
......
n.上一个子文件夹的第一个子文件夹(若是文件则返回步骤“n-1”)
最后,pra的最后一个子文件拷贝完成/
pra的最后一个子文件夹中的最后一个文件拷贝完成/
pra的最后一个子文件夹的最后一个文件夹的最后一个文件拷贝完成!
所有递归方法结束,copyDir方法结束
*/
原文:https://www.cnblogs.com/Burning-youth/p/15630034.html
最新更新
带有参数的装饰器
类装饰器
django中的auth模块与admin后台管理
python的日期处理
字符串常用方法
基本数据类型概述
python-map()函数基本用法
python带你实现任意下载AcFun视频数据~
bbs项目之注册功能
变量的定义和使用
三大常用数据库事务详解之三:事务运行
三大常用关系型数据库事务详解之二:基
三大关系型数据库事务详解之一:基本概
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
VB.NET中如何快速访问注册表
ASP.NET中图象处理过程详解
Vue(1)Vue安装与使用
JavaScript 语言入门
js将一段字符串的首字母转成大写
纯原生html编写的h5视频播放器
H5仿原生app短信验证码vue2.0组件附源码地
TypeScript(4)接口
TypeScript(3)基础类型
TypeScript(2)WebStorm自动编译TypeScript配置