复制单级文件夹
复制单级文件夹
-
需求:把"D\itCast"这个文件夹复制到模块目录下
-
思路:
创建数据源目录File对象,路径是D:\itCast
获取数据源目录File对象的名称(itCast)
创建目的地目录File对象,路径名是模块名+itCast组成(src\itCast)
判断目的地目录对应的File目录是否存在,如果不存在,就创建
获取数据源目录下所有文件的File数组
遍历File数组,得到每一个File对象,该File对象,其实就是数据源文件(D:\itCast\…)
获取数据源文件File对象的名称(mn.jpg)
创建目的地文件File对象,路径名是目的地目录+mn.jpg组成(src\itCast\mn.jpg)
复制文件,由于文件不仅仅是文本文件,还有图片,视频等文件,所以采用字节流复制文件 -
整体思路上: 先复制目录----->根据循环复制文件----->在每次循环中用字节缓冲流将文件内容意义复制
以图文和代码内容形式讲解
图文:
数据源"D\itCast"
代码:
package Demo;import java.io.*;public class Demo { public static void main(String[] args) throws IOException { //创建数据源目录File对象,路径是D:\\itCast File file = new File("D:\\itCast"); //获取数据源目录File对象的名称(itCast) String name = file.getName(); //创建目的地目录File对象,路径名是模块名+itCast组成src\\itCast) File file1 = new File("D:\\item\\Hellow\\src",name); //判断目的地目录对应的File目录是否存在,如果不存在,就创建 if (!file1.exists()){ file1.mkdir(); } //获取数据源目录下所有文件的File数组 File[] files = file.listFiles(); //遍历File数组,得到每一个File对象,该File对象,其实就是数据源文件(D:\\itCast\\...) for (File x:files) { //获取数据源文件File对象的名称(mn.jpg以及各种别的名字的类型) String name1 = x.getName(); //创建目的地文件File对象,路径名是目的地目录+mn.jpg组成(D:\item\Hellow\src\\itCast\\...) File file2 = new File(file1,name1); //注意以上操作只是将目录以及目录下的文件复制到目标源中,内容是空的!!!! //复制文件,由于文件不仅仅是文本文件,还有图片,视频等文件,所以采用字节流复制文件,此次操作是 copyFile(x,file2); } } private static void copyFile(File x,File file2) throws IOException { //建立字节缓冲输入流 BufferedInputStream bi = new BufferedInputStream(new FileInputStream(x)); //建立字节缓冲输出流 BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(file2)); //复制文件 int len; byte[] bytes = new byte[1024]; while((len=bi.read(bytes))!=-1){ bo.write(bytes, 0, len); } //释放资源 bi.close(); bo.close(); }}
输出的内容
内容分析