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 ...
随机推荐
- OpenStack之虚拟机热迁移
这里的环境是centos7版本,openstack K版 1.在各个计算节点设置权限 chmod /var/lib/nova/instances 2.修改各个节点的nova.conf(/etc/nov ...
- 文件(file 类)
题目: 编写一个应用程序,输入一个目录和一个文件类型,显示该目录下符合该类型的所有文件.之后,将这些文件中的某一个文件剪切到另外一个目录中. 代码: File_Demo /** * 包含两个类,一个主 ...
- Cheat sheet PySpark SQL Python(PySpark 速查表)
- 目标检测之RCNN,fast RCNN,faster RCNN
RCNN: 候选区生成(Selective Search). 分割成2000左右的候选小区域 合并规则:颜色.纹理相近,尺度均匀,合并后形状规则 特征提取. 归一候选区尺寸为227×227,归一方法. ...
- oracle查询表空间的空间占用情况
,) percent_used from (select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespac ...
- 【WPF学习】第四十四章 图画
通过上一章的学习,Geometry抽象类表示形状或路径.Drawing抽象类扮演了互补的角色,它表示2D图画(Drawing)——换句话说,它包含了显示矢量图像或位图需要的所有信息. 尽管有几类画图类 ...
- 《Head first设计模式》之观察者模式
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新. 客户有一个WeatherData对象,负责追踪温度.湿度和气压等数据.现在客户给我们提了个 ...
- 《算法导论》第二章demo代码实现(Java版)
<算法导论>第二章demo代码实现(Java版) 前言 表示晚上心里有些不宁静,所以就写一篇博客,来缓缓.囧 拜读<算法导论>这样的神作,当然要做一些练习啦.除了练习题与思考题 ...
- 《自拍教程5》Python自动化测试学习思路
前提:熟悉测试业务及流程 任何Python自动化测试的前提,都是必须先熟悉实际测试业务. 任何脱离实际测试业务的自动化都是噱头且无实际意义! 测试的基本流程基本是: 测试需求分析,测试用例设计与评审, ...
- dubbo-admin dubbo-monitor 安装
dubbo-admin: 因为我们不能直观的看到dubbo和zk上到底有什么服务(提供者),所以我们需要一个可视化工具来方便我们管理每一个服务和每一个节点.dubbo-admin 就是dubbo的管理 ...