复制单级文件夹
把/test文件夹(包含文件夹里面的内容)复制到模块目录下
思路:
- 创建数据源目录File对象,路径是:/test
- 获取数据源目录File对象的名称(test)
- 创建目的地目录File对象,路径名是模块名+test组成(file-class/test)
- 判断目的地的目录对应的File是否存在,如果不存在,就创建
- 获取数据源目录下所有文件的File数组
- 遍历File数组,得到每一个File对象,该File对象,其实就是数据源文件
- 获取数据源文件File对象的名称(image.jpg)
- 创建目的地文件File对象,路径名是目的地目录+image.jpg组成(file-class/test/image.jpg)
- 复制文件
- 由于文件不仅仅是文本文件,还有图片,视频等文件,所以采用字节流复制文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| package com.demo.cases;
import java.io.*;
public class CopyFolderDemo { public static void main(String[] args) throws IOException { File srcFolder = new File(""); String srcFolderName = srcFolder.getName(); File destFolder = new File("java-file-class", srcFolderName); if (!destFolder.exists()) { destFolder.mkdir(); } File[] listFiles = srcFolder.listFiles(); for (File file : listFiles) { String fileName = file.getName(); File destFile = new File(destFolder, fileName); copyFile(file, destFile); } }
private static void copyFile(File file, File destFile) throws IOException { BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file)); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(destFile));
byte[] bytes = new byte[1024]; int len; while ((len = bufferedInputStream.read(bytes)) != -1) { bufferedOutputStream.write(bytes, 0, len); } bufferedInputStream.close(); bufferedOutputStream.close(); } }
|
复制多级文件夹
把/test文件夹(包含文件夹里面的内容及子目录和子目录下的所有内容)复制到/test_copy目录下
思路:
- 创建数据源File对象:路径:/test
- 创建目的地File对象,路径:/test_copy
- 写方法实现文件夹的复制,参数为数据源File对象和目的地File对象
- 判断数据源是否是目录
- 是:
- 在目的地下创建和数据源File名称一样的目录
- 获取数据源File下所有文件或目录的File数组
- 遍历该File数组,得到每一个File对象
- 把改File作为数据源File对象,递归调用复制文件夹的方法
- 说明是文件,直接复制,使用字节流
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| package com.demo.cases;
import java.io.*; import java.util.Objects;
public class CopyFoldersDemo { public static void main(String[] args) throws IOException { File srcFile = new File(""); File destFile = new File(""); copyFolder(srcFile, destFile); }
private static void copyFolder(File srcFile, File destFile) throws IOException { if (srcFile.isDirectory()) { String srcFileName = srcFile.getName(); File newFolder = new File(destFile, srcFileName); if (!newFolder.exists()) { newFolder.mkdir(); } File[] files = srcFile.listFiles(); for (File file : Objects.requireNonNull(files)) { copyFolder(file, newFolder); } } else { File newFile = new File(destFile, srcFile.getName()); copyFile(srcFile, newFile); } }
private static void copyFile(File file, File destFile) throws IOException { BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file)); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(destFile));
byte[] bytes = new byte[1024]; int len; while ((len = bufferedInputStream.read(bytes)) != -1) { bufferedOutputStream.write(bytes, 0, len); } bufferedInputStream.close(); bufferedOutputStream.close(); } }
|