通过File、字节流、字节流缓冲区实现文件复制

需求:

1、用File类读取指定文件File下的所有文件(包括Copy文件夹内的所有文件)

2、将所有文件复制到指定文件FileCopy夹下

需求分析:

1、需要先读取到指定的文件夹File

2、判断File文件夹下的文件类型( 文件 or 文件夹 )

3、把文件读取到内存中(递归查询文件)

4、考虑指定文件夹FileCopy下不存在Copy文件夹怎么办?(分析File类的方法)

5、把文件从内存中写到指定文件夹下

代码实例:

 package InputOutput;

 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; public class CopyFileDemo {
public static void main(String[] args) throws IOException {
// 指定源文件路径
String srcPath = "E:/JavaCodeDemo/InputOutput/File";
// 指定目标文件路径
String desPath = "E:/JavaCodeDemo/InputOutput/FileCopy";
// 创建源File
File srcFile = new File(srcPath);
// 创建目标File
File desFile = new File(desPath);
// 复制文件
copFile(srcFile, desFile);
// 复制完成
System.out.println("Success!");
} public static void copFile(File srcFile, File desFile) throws IOException {
// 获取所有文件和文件夹的集合
File[] fileList = srcFile.listFiles();
// 遍历集合
for (File file : fileList) {
// 判断是否为文件夹
if (file.isDirectory()) {
// 获取文件夹名称
String folderName = file.getName();
// 创建目标路径File
File newFile = new File(desFile, folderName);
// 判断目标路径File对应的文件夹是否存在
if (!newFile.exists()) {
// 如果不存在创建新的文件夹
newFile.mkdirs();
}
// 循环调用方法获取创建所有文件夹
copFile(file, newFile);
} else {
// 获取文件的名称
String name = file.getName();
// 根据文件名称创建新的File
File finalPathFile = new File(desFile, name);
// 调用IO流复制文件
IOStream(file, finalPathFile);
}
}
} public static void IOStream(File file2, File finalFile) throws IOException {
// 创建字节输入和输出流
FileInputStream in = new FileInputStream(file2);
FileOutputStream out = new FileOutputStream(finalFile);
// 创建字节输入输出流缓冲区
BufferedInputStream Bin = new BufferedInputStream(in);
BufferedOutputStream Bout = new BufferedOutputStream(out);
// 调用方法读取数据
int flag = -;
byte[] b = new byte[];
while ((flag = Bin.read(b)) != -) {
// 调用方法写数据
Bout.write(b, , flag);
Bout.flush();
}
// 关闭资源,先关写再关读
Bout.close();
Bin.close();
}
}

结果:



才疏学浅,如果有更好的方法欢迎留言指点,谢谢!

IO流学习之综合运用(文件复制)的更多相关文章

  1. Java IO流学习总结一:输入输出流

    Java IO流学习总结一:输入输出流 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54292148 本文出自[赵彦军的博客] J ...

  2. Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream

    Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...

  3. Java IO流学习总结(1)

    Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本 ...

  4. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter

    在上一篇文章中Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream介绍了缓冲流中的字节流,而这一篇着重介绍缓冲流中字符流Buffered ...

  5. Java IO流学习

    Java IO流学习 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是 ...

  6. Java IO流学习总结八:Commons IO 2.5-IOUtils

    Java IO流学习总结八:Commons IO 2.5-IOUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/550519 ...

  7. Java基础-IO流对象之随机访问文件(RandomAccessFile)

    Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...

  8. IO流 - 字节输入输出流,文件的复制

    IO流 I:input - 输入(读取),eg:把硬盘的内容读取到内存 O: output - 输出(写入) eg:把内存中的东西写入硬盘保存 流:数字(字符/字节) 一般1个字符=2Byte,1By ...

  9. 关于java读取文件IO流学习总结(一)

    IO流的分类: 1.根据流的数据对象来分: 高端流:所有的内存中的流都是高端流,比如:InputStreamReader 低端流:所有的外界设备中的流都是低端流,比如InputStream,Outpu ...

随机推荐

  1. ros中坐标系管理系统

    首先安装小海龟实例的功能包ros-melodic-turtle-tf  qqtsj  ~  sudo apt install ros-melodic-turtle-tf [sudo] qqtsj ...

  2. 基于HTTPS的接口测试——nginx配置SSL

    目录 基于HTTPS的接口测试--nginx配置SSL 1. 背景 2. 所需环境与域名备案解析 2.1 云服务器 2.2 域名 2.3 SSL证书 2.4 网站备案 2.5 域名解析 3.nginx ...

  3. SDL初始化和创建窗口

    //初始化SDL2和创建一个窗口,并且将屏幕绘制成大红色 #include <iostream> extern "C" { #include <SDL.h> ...

  4. css:html-font-size

    font-family:"Helvetica Neue",Helvetica,Arial,sans-serif

  5. css-box-shadowing

    box-shadow: h-shadow v-shadow blur spread color inset; 注释:box-shadow 向框添加一个或多个阴影.该属性是由逗号分隔的阴影列表,每个阴影 ...

  6. JCL、SLF4J、Log4J、Log4J2、LogBack和JUL之间的关系,你搞清楚了吗?

    写在前面 日志组件是我们平时开发过程中必然会用到的组件.在系统中正确的打印日志至少有下面的这些好处: 调试:在程序的开发过程中,必然需要我们不断的调试以达到程序能正确执行的状态 .记录日志可以让开发人 ...

  7. python练习——第3题

    原GitHub地址:https://github.com/Yixiaohan/show-me-the-code 题目:将 0001 题生成的 200 个激活码(或者优惠券)保存到 Redis 非关系型 ...

  8. SpringCloud五大神兽之Eureka

    注册中心概述 什么是注册中心? 相当于服务之间的'通讯录',记录了服务和服务地址之间的映射关系.在分布式架构中服务会注册到这里.当服务需要调用其他服务时,就在注册中心找到其他服务的地址,进行调用 注册 ...

  9. Python3(四) 分支、循环、条件与枚举

    表达式        表达式(Expression)是运算符(operator)和操作数(operand)所构成的序列 >>> 1 + 1 2 >>> a = [1 ...

  10. java 获取两个时间之前所有的日期

    正序(2017-01-01 ~2019-xxxxx) package com.founder.util; import java.text.SimpleDateFormat; import java. ...