IO流_复制文件夹

复制单级文件夹

什么是单级文件夹:该文件夹里面只有小文件,没有小文件夹 什么是多级文件夹:该文件夹里面有小文件,也有小文件夹

复制文件夹的时候,会把该文件夹里面的小文件也复制

需求:把"D:\huanf\java\src\ch18_ch19储物区\JavaZM"文件夹复制到"D:\huanf\java\src\ch18_ch19储物区\JavaWEB"文件夹里面

思路: 1、创建数据源目录File对象,路径是"D:\huanf\java\src\ch18_ch19_储物区\JavaZM" 2、获取数据源目录File对象的名称,即JavaWEB 3、创建目的地目录File对象,路径名是模块名+JavaWEB 4、判断目的地目录对应的File是否存在,如果不存在,就创建 5、获取数据源目录下的所有文件的File数组 6、遍历File数组,得到每一个File对象,该File对象,其实就是数据源文件 (1)比如原JavaZM目录下可能还会有小文件,例如JavaZM\Text.txt 7、获取数据源文件File对象的名称 (1)例如Text.txt 8、创建目的地文件File对象,路径名是目的地目录+Text.txt 9、复制文件 (1)由于文件不仅仅是文本文件,还有图片、视频等文件,所以采用字节流复制文件

 

复制单级文件夹的练习

 

复制多级文件夹

什么是单级文件夹:该文件夹里面只有小文件,没有小文件夹 什么是多级文件夹:该文件夹里面有小文件,也有小文件夹

复制文件夹的时候,会把该文件夹里面的小文件和小文件夹也复制

需求:把"D:\huanf\java\src\ch18_ch19储物区\JavaWEB"文件夹复制到"D:\huanf\java\src\ch18_ch19储物区\JavaBM"文件夹里面 注意:JavaWEB是多级文件夹,我们要把JavaWEB文件夹复制到JavaBM文件夹里面

思路: 1、创建数据源File对象,路径是"D:\huanf\java\src\ch18_ch19储物区\JavaWEB" 2、创建目的地File对象,路径是"D:\huanf\java\src\ch18_ch19储物区\JavaBM" 3、写方法实现文件夹的复制,参数为数据源File对象和目的地File对象。这个方法是复制文件夹的 4、在复制文件夹的方法的内部判断数据源File是否是目录 (1)是: 11、先在目的地下创建和数据源File名称一样的目录 22、再获取数据源FIle下所有文件或者目录的File数组 33、再使用增强for来遍历该FIle数组,得到每一个File对象,这个File对象可能是文件对象,也可能是目录对象 44、把该File作为数据源File对象,递归调用复制文件夹的方法。如果是目录就再从这里的"是"的11~44来一遍 (2)不是: 111、说明是文件直接复制,用字节流

 

复制多级文件夹的练习

 

复制文件的异常处理

【第一种解决异常的写法】throws IOException 抛出异常

【第二种解决异常的写法】try...catch...finally

【第三种解决异常的写法】try...catch 。即JDK7之后的改进方案。特点是自动释放资源

【第四种解决异常的写法】先定义,再try...catch 。即JDK9之后的改进方案。特点是自动释放资源

 

复制文件异常处理的练习