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 ...
随机推荐
- 死磕java(2)
java数据类型 boolean --true--false byte --8位 short --16位 int --32位 long --64位 char float --32位 double -- ...
- Java数据类型及对应取值范围
Java数据类型及对应取值范围 在Java中,数据类型分为两大种:基本数据类型(值类型)和包装类型(引用数据类型).基本数据类型不是对象,不能调用toString().hashCode().getCl ...
- 位运算在状态压缩DP中的应用
一.判断一个数字X的i位是不是1 方法: << (i-)) & x > ) 原理: 1左移(i-1)位,相当于制造了一个就i位上是1其他位都是0的一个二进制数.将这个数 ...
- 曹工说Spring Boot源码(18)-- Spring AOP源码分析三部曲,终于快讲完了 (aop:config完整解析【下】)
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...
- Go语言实现:【剑指offer】包含min函数的栈
该题目来源于牛客网<剑指offer>专题. 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数. 时间复杂度应为O(1). Go语言实现: var myList = ...
- error C2662
原因:关于const的问题 具体错误:函数的参数列表中参数签名为const,但是却调用了该参数的非const的成员函数 例子: 即使我们知道NoConst()并不会改变类的data成员,编译器依旧会报 ...
- postman之设置token
在做接口测试的时候,很多业务的接口是有依赖性的,下一个接口需要上一个接口的token依赖,例如余额查询接口,需要先登录,才能查询余额.那么,这种接口如何使用postman进行测试呢?今天让我来给小伙伴 ...
- NR / 5G - Polar Coding
5G New Radio Polar Coding Introduction The selection of polar codes as the channel coding technique ...
- vue的组件传值
1.父组件向子组件传值 父组件: 123456789101112 <template> <child :name="name"></child> ...
- 20200105--python学习第七天
今日内容 深浅拷贝 文件操作 内容回顾及补充 1.内容回顾 计算机基础 编码 语法 if/while/for 数据类型 type/id/range 运算符 2.面试题 a.公司线上的系统用的是什么? ...