1.递归复制文件
思路:
1.1.文件复制
本质就是文件的输入和输出
1.1完成文件输入,读取文件
1.2完成文件输出
1.3整合输入和输出完成复制
代码实现:
try (
FileInputStream fis = new FileInputStream("D:/a.txt");
FileOutputStream fos = new FileOutputStream("D:/a.txt",true);
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);
){
byte[] bytes = new byte[102400];
int count = 0;
while ((count=bis.read(bytes)) != -1) {
bos.write(bytes, 0, count);
bos.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
1.2.获取目录下所有的子目录
2.1获取目录对象
2.2获取该目录下的所有直接子目录
2.3递归获取子目录下面的子目录
代码实现:
public static void main(String[] args) {
File file = new File("D:\\20期\\课件");
test(file);
}
public static void test(File file){
// 判断是否是文件
if (file.isFile()) {
System.out.println(file.getAbsolutePath());
}else{
// 这里说明是文件夹
// 获取所有的子文件
File[] files = file.listFiles();
// 遍历每个子文件,判断是不是文件
for (File subFile : files) {
test(subFile);
}
}
}
1.3.整合代码
3.1获取所有后代目录后,得到每一个文件对象
3,2通过文件对象就可以获取该文件的全路径
3.3有了全路径,就可以创建流对象
3.4然后就可以完成复制
代码实现:
public static void main(String[] args) {
File file = new File("D:\\20期\\课件");
test(file);
System.out.println("复制完成");
}
public static void test(File file){
// 判断是否是文件
if (file.isFile()) {
// 获取全路径
String filePath = file.getAbsolutePath();
/**
* 注意 : 文件复制的时候,目标路径和原路径 不能一样
*/
// 目标目录,复制到E盘,进行拼接字符串
String newFilePath = "E"+filePath.substring(1);
// 判断目标目录是否存在
// 获取目标文件对象
File newFile = new File(newFilePath);
// 获取父文件对象
File parentFile = newFile.getParentFile();
// 不存在就创建
if (!parentFile.exists()) {
parentFile.mkdirs();
}
try (
FileInputStream fis =