IO流学习之综合运用(文件复制)
通过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流学习之综合运用(文件复制)的更多相关文章
- Java IO流学习总结一:输入输出流
Java IO流学习总结一:输入输出流 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54292148 本文出自[赵彦军的博客] J ...
- Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream
Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...
- Java IO流学习总结(1)
Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本 ...
- Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter
在上一篇文章中Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream介绍了缓冲流中的字节流,而这一篇着重介绍缓冲流中字符流Buffered ...
- Java IO流学习
Java IO流学习 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是 ...
- Java IO流学习总结八:Commons IO 2.5-IOUtils
Java IO流学习总结八:Commons IO 2.5-IOUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/550519 ...
- Java基础-IO流对象之随机访问文件(RandomAccessFile)
Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...
- IO流 - 字节输入输出流,文件的复制
IO流 I:input - 输入(读取),eg:把硬盘的内容读取到内存 O: output - 输出(写入) eg:把内存中的东西写入硬盘保存 流:数字(字符/字节) 一般1个字符=2Byte,1By ...
- 关于java读取文件IO流学习总结(一)
IO流的分类: 1.根据流的数据对象来分: 高端流:所有的内存中的流都是高端流,比如:InputStreamReader 低端流:所有的外界设备中的流都是低端流,比如InputStream,Outpu ...
随机推荐
- 树莓派4b点亮led灯基本步骤
方法/步骤1: 首先要了解树莓派上的针脚,下面以树莓派4b为例子 把LED的正极插在GPIO脚上,把负极插在GND上 这里的例子是:正极插在GPIO21 方法/步骤2: 创建脚本 在配置好的树莓派系统 ...
- 火狐的一个bug
发现这个bug是因为最近眼睛不太好,所以网页大小都是正常大小的140% 就发现火狐游览器好多网页上的输入框与按钮对不齐 测试代码 <!DOCTYPE html> <html lang ...
- qt creator源码全方面分析(2-6)
目录 User Interface Text Guidelines 语法和风格 标点 编写工具提示tooltips 编写消息 UI文本大写 使用书本样式大写 使用句子样式大写 准备本地化 标记UI文本 ...
- Comb使用2
只需添加如下内容 AndroidManifest中添加如下 不要忘记修改application ID与Comb对应 最好不要采用将combSDK lib文件添加到工程中否则可能连接不了Comb 如果添 ...
- sqlserver datatime value plus random number
If we want to make some identiity value in sqlserver , we can use identity data type in a table.Howe ...
- Mysql事务结合spring管理
spring事务相关问题记录 遇到情况: 在本地单体应用调试代码时,发现在一个加了@transaction注解的方法里进行先更新后查询的操作,查询的结果是可以看到更新的内容的.而在微服务环境中同样的代 ...
- vue文件引入全局样式导致样式重复
通常项目中src下的子目录都会有一个style文件夹,专门用来存放全局的样式文件. 这个style文件夹下,一般有reset.css.var.scss.mixin.scss.class.scss.in ...
- 关于线段树的感悟(Segment Tree)
线段树的感悟 : 学过的东西一定要多回头看看,不然真的会忘个干干净净. 线段树的 Introduction : English Name : Segment Tree 顾名思义 : 该数据结构由两个重 ...
- Burpsuite--安装和环境配置
1.引子 Burpsuite是一款安全人员常用的工具.在渗透测试中,我们使用Burp Suite将使得测试工作变得更加容易和方便,即使在不需要娴熟的技巧的情况下,只有我们熟悉Burp Suite的使用 ...
- vue 过渡 & 动画
过渡 & 动画 过渡动画 用css先定义好动画效果 .a-enter-active, .a-leave-active { transition: all 1.5s; } .a-enter, . ...