将一个文件夹的内容拷贝到另一个文件夹中
程序员文章站
2022-03-04 14:24:15
...
从键盘接收一个文件夹路径,将一个文件夹的内容拷贝到另一个文件夹中
package com.wang.test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Copy {
public static void main(String[] args) throws IOException {
File src = getDir();
File dest = getDir();
if(src.equals(dest)) {
System.out.println("目标文件夹是源文件夹的子文件夹");
}else {
copy(src,dest);
}
}
/**
* 从键盘接受一个文件夹路径
* 1、返回值类型File
* 2、参数列表无
*/
public static File getDir() {
//1、创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个文件夹路径:");
//2、无限循环
while(true) {
//3、获取键盘录入的结果并将其封装成File对象
String line = sc.nextLine();
File dir = new File(line);
// 4、对File对象进行判断
if(!dir.exists()) {
System.out.println("您输入的文件夹路径不存在,请重新输入:");
}else if(dir.isFile()) {
System.out.println("您输入的是一个文件路径,请重新输入:");
}else {
//5、将文件夹路径返回
return dir;
}
}
}
/**
* 把其中一个文件夹的内容拷贝到另一个文件夹中
* 1、返回值类型void
* 2、参数列表File src, File dest
* @throws IOException
*/
public static void copy(File src, File dest) throws IOException {
//1、在目标文件夹中创建原文件夹
File newDir = new File(dest, src.getName());
newDir.mkdir();
//2、获取原文件夹中所有的文件和文件夹,存储在File数组中
File[] subFiles = src.listFiles();
//3、遍历数组
for (File subFile : subFiles) {
//4、判断是文件就用io流读写(io流只能读写文件,不能读写文件夹)
if(subFile.isFile()) {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(newDir,src.getName())));
int b;
while((b = bis.read()) != -1) {
bos.write(b);
}
bis.close();
bos.close();
}else {
//5、判断是文件夹,递归调用
copy(subFile, newDir);
}
}
}
}
上一篇: yolov5报错:RuntimeError: a view of a leaf Variable that requires grad is being used in an in-place
下一篇: Python中枚举类的用法
推荐阅读
-
将count(*)值写入另一个表中的方法
-
ae插件pr可以用吗?将AE插件复制到pr插件文件夹中的详细教程
-
Mysql将一个表中的某一列数据复制到另一个表中某一列里的方法
-
MAC将最近使用的应用程序整合到Stack放在一个文件夹里
-
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
-
sql将一个表中的数据插入到另一个表中的方法
-
将DataTable中的一行复制到另一个DataTable的方法
-
SQL Server 将一个表中字段的值复制到另一个表的字段中
-
android中写一个内部类来选择文件夹中指定的图片类型实例说明
-
Excel2003中将多个单元格内容合并到一个单元格的两种方法