Java中FileInputStream和FileOutputStream类实现文件夹及文件的复制粘贴
基本思路就是边搜索边复制,这里用的是广度搜索(BFS)
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; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayDeque;public class CopyFile {public static void main(String[] args) {File f1 = new File("kkk");File f2 = new File("D:\\");try {getPathBFS(f1,f2);} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}}/*** 用于读和写* @param f1 输入流* @param f2 输出流*/private static void copyFile(File f1,String f2){InputStream in = null;OutputStream out = null;try {in = new BufferedInputStream(new FileInputStream(f1));out = new BufferedOutputStream(new FileOutputStream(f2));byte by[] = new byte[1024];int len = 0;while((len = in.read(by))!=-1){out.write(by, 0, len);}} catch (FileNotFoundException e) {e.printStackTrace();}catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}finally{if(in!=null){try {in.close();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}}if(out != null){try {out.close();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}}}}/*** 用于搜索* @param f1 目标文件* @param f2 复制到的目标* @throws IOException*/private static void getPathBFS(File f1,File f2) throws IOException {//运用队列进行广度搜索ArrayDeque<File> deque = new ArrayDeque<File>();//用于存储复制目标文件ArrayDeque<File> dequeCopy = new ArrayDeque<File>();//第一个File实例入队 deque.offer(f1);//创建第一个文件夹f2 = new File(f2,f1.getName());dequeCopy.offer(f2);//队列为空时停止while(!deque.isEmpty()){//取队头File[] ff = deque.peek().listFiles();File copyFiledir = dequeCopy.peek();//创建文件夹 copyFiledir.mkdir();//出队 deque.poll();dequeCopy.poll();for(int i=0;i<ff.length;i++){//如果是目标文件夹入队if(ff[i].isDirectory()){//复制文件夹入队File temp = new File(copyFiledir,ff[i].getName());dequeCopy.push(temp);deque.push(ff[i]);}else{//复制到相应文件夹copyFile(ff[i],copyFiledir.getAbsolutePath()+"\\"+ff[i].getName());}}}}}
转载于:https://www.cnblogs.com/hnzyyTl/p/4970104.html
Java中FileInputStream和FileOutputStream类实现文件夹及文件的复制粘贴相关推荐
- cmd 将文件夹下文件剪切到另外一个文件_总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇...
本文是Java IO总结系列篇的第5篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...
- Java中通过代理对类进行修改
JAVA中的静态代理.动态代理及JDK proxy和CGLIB.Javassist.ASM实践 简介 Java中对已经有的类进行修改,改变或调整其执行,这可以通过代理来实现.Java的class文件是 ...
- java ftp ftpclient_详解JAVA中使用FTPClient工具类上传下载
详解JAVA中使用FTPClient工具类上传下载 在Java程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件.本文简单介绍如何利用jakarta commons中的FTPClie ...
- Java中怎么把文本追加到已经存在的文件
Java中怎么把文本追加到已经存在的文件 我需要重复把文本追加到现有文件中.我应该怎么办? 回答一 你是想实现日志的目的吗?如果是的话,这里有几个库可供选择,最热门的两个就是Log4j 和 Logba ...
- 《Java并发编程的艺术》——Java中的并发工具类、线程池、Execute框架(笔记)
文章目录 八.Java中的并发工具类 8.1 等待多线程完成的CountDownLatch 8.2 同步屏障CyclicBarrier 8.2.1 CyclicBarrier简介 8.2.2 Cycl ...
- 《Java并发编程的艺术》读后笔记-Java中的并发工具类(第八章)
文章目录 <Java并发编程的艺术>读后笔记-Java中的并发工具类(第八章) 1.等待多线程完成的CountDownLatch 2.同步屏障CyclicBarrier 2.1 Cycli ...
- 【java】删除文件夹及文件夹中的所有文件
需求 删除指定文件夹及文件夹中的所有文件. 环境 JDK 1.8 代码示例 在JDK 8中,可以使用java.nio.file.Files和java.nio.file.Path类来删除一个文件夹及其中 ...
- java中的jsp文件创建_在JSP中创建文件夹和文件
在JSP中判断某文件是否存在,并创建文件夹和文件. 备忘. 在WinXP + Tomcat5.1 中,代码如下: //得到web根路径//绝对路径 //getServletContext().getR ...
- 【JAVA系列】Java中的包、类的继承、多态、抽象类与接口
文章目录 前言 一.包及访问权限 1.什么是包? 2.如何导入包? 3.JDK中常见的包 4.包的访问控制权限 二.继承 1.继承的基本概念 2.继承时方法调用顺序 3.super和this关键字 4 ...
最新文章
- Golang学习之GOROOT、PATH、GOPATH及go get
- java c3p0 配置文件_关于最近一直纠缠我的c3p0-config.xml配置文件找不到的问题终于解决了,\(^o^)/...
- 亲和数 杭电2040
- [Cypress] Find and Test Focused Input with Chrome’s DevTools in Cypress
- java的多线程学习,第四记
- pytorch迁移学习后使用微调策略再次提高模型训练结果
- 入门到精通pl/sql编程(千里之行始于足下)之触发器
- 如何在Word中输入带圈数字1-10的黑底白字和白底黑字的数字字符?
- Eric6与pyqt5学习笔记14 【实战5 百度贴吧离线签到工具】
- 华为手机解锁码快速申请方式
- JAVA中关于if结构的相关的练习题
- 证书错误 SSLCertVerificationError
- 详解单片机中的关键字:sfr sbit
- Fixed Resistors
- adb 查看手机闪存类型
- 应对ME23数据抓取时ID发生变化 SAP
- 使用LM324实现信号放大及电压比较综合报警电路
- AP Autosar平台设计 4操作系统
- 算法竞赛进阶指南0x12:Team Queue
- Oracle Database 12c Security - 6. Real Application Security