JavaSE 练习-File、字节流递归拷贝文件夹极其子文件夹和文件到目标文件夹中
来源:互联网 发布:赚钱红包软件秒到账 编辑:程序博客网 时间:2024/05/22 07:47
前言:对JavaSE学习回顾,使用File文件对象、字节流、递归(递归只是一种现象)拷贝源文件夹中所有文件、文件夹极其子文件夹下的文件和文件夹。
注意事项:递归操作容易出现内存溢出,所以操作的源文件夹目录层级不要太深!!!
以下为代码实现:
package cn.itcast.javaeeday11level01;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/** * * @author 大家都说名字长不会被发现 * */public class CopyFolder { public static void main(String[] args) throws FileNotFoundException { File sourceFolder = new File("D:\\Java Android学习区\\教学视频\\数据结构"); File goalFolder = new File("D:\\CopyTest"); copyFolder(sourceFolder, goalFolder); } public static void copyFolder(File sourceFolder,File goalFolder) throws FileNotFoundException { //判断目标文件夹是否存在 if (!goalFolder.exists()) { //不存在创建一个目标文件夹 goalFolder.mkdir(); } //判断源文件夹是否存在 if (sourceFolder.exists()) { //获取源文件夹下文件夹及文件的File对象 File[] listFiles = sourceFolder.listFiles(); //遍历File文件数组 for (File file : listFiles) { //判断是文件还是文件夹 if (file.isDirectory()) { //是文件夹就创建一个新的File对象,将目标File对象和文件夹名传入 File newFileFolder = new File(goalFolder,file.getName()); //在目标文件夹下创建文件夹 newFileFolder.mkdir(); //递归调用方法自身 copyFolder(file, newFileFolder); }else if (file.isAbsolute()) { BufferedInputStream inputStream = null; BufferedOutputStream outputStream = null; try { //定义新File对象 File newFile = new File(goalFolder,file.getName()); //定义字节输入输出流 inputStream = new BufferedInputStream(new FileInputStream(file)); outputStream = new BufferedOutputStream(new FileOutputStream(newFile)); //定义字节数组,大小为1M byte[] buffer = new byte[1024*1024]; int len; while((len = inputStream.read(buffer)) !=-1) { //读数据 inputStream.read(buffer, 0, len); } //将数据写入 outputStream.write(buffer); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { try { outputStream.close(); inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }else { throw new FileNotFoundException("您输入的路径不存在,请您重新输入"); } }}
阅读全文
0 0
- JavaSE 练习-File、字节流递归拷贝文件夹极其子文件夹和文件到目标文件夹中
- 递归方式遍历文件夹下所有子文件夹和文件
- 递归 查找 一个文件夹所有的子文件夹和文件
- java io 文件夹和文件的拷贝
- Java File类的递归获得文件夹下所有文件夹和文件
- Java中使用File类删除文件夹和文件
- Java中递归实现复制文件夹和文件
- File类创建文件夹和文件
- Qt递归遍历文件夹和文件目录
- 递归获取文件夹内子目录和文件
- 用递归列出文件夹所有文件夹和文件
- C#中拷贝文件夹含子文件夹
- java循环遍历文件夹及其子文件夹和文件
- 列出指定文件夹中的子文件夹和文件
- 列出指定文件夹中的子文件夹和文件
- Java 代码删除文件夹及其子文件夹和文件操作
- PowerShell遍历文件夹下的子文件夹和文件
- 遍历文件夹和文件
- 406. 和大于S的最小子数组
- 大咖讨论点击对seo排名的各种影响
- codeforces841E
- 欢迎使用CSDN-markdown编辑器
- 配置React Native的开发环境
- JavaSE 练习-File、字节流递归拷贝文件夹极其子文件夹和文件到目标文件夹中
- JAVA就业分析
- 运行异常:获取不到UI界面组件对象
- 《人工神经网络》读书笔记
- 意识的哲学、生理及智能属性研究
- 使用java移动文件
- 认知与身体: 理论心理学的视角
- thinkPHP地址URL跳转问题
- dialogfragment链式调用封装