源文件目录
目标文件目录
思路
获取源文件,用File类获取源文件里的文件数据,判断源文件里的文件数据是文件还是文件夹,如果是文件就拷贝,如果是文件夹,就在目标文件中创建该文件夹,将源文件中的文件拷贝到目标文件中main方法
public static void main(String[] args) {
//源文件
File file_01 = new File("F:\\A");
//目标文件
File file_02 = new File("F:\\G");
//拷贝方法
move(file_01,file_02);
}
递归文件方法
private static void move(File srcFile, File desFile) {
if (srcFile == null)return;
//获取源文件下的文件,返回一个文件集合
File[] files = srcFile.listFiles();
if (files != null) {
//遍历循环文件集合
for (File file : files) {
//判断文件是否是文件夹
if (file.isDirectory()) {
//是文件夹,则在目标文件中创建该文件夹
File newDir = new File(desFile + "/" + file.getName());
newDir.mkdirs();
//递归进该目录
move(file, newDir);
} else {
//是文件,则将该文件拷贝进目标文件
File newFile = new File(desFile, file.getName());
copy(file, newFile);
}
}
}
}
拷贝方法
常规文件输入输出流
private static void copy(File srcFile, File desFile){
try(FileOutputStream outputStream = new FileOutputStream(desFile);
FileInputStream inputStream = new FileInputStream(srcFile)){
int len = 0;
byte[] bytes = new byte[1024];
while ((len = inputStream.read(bytes)) != -1){
outputStream.write(bytes,0,len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
效果
源代码
public static void main(String[] args) {
File file_01 = new File("F:\\A");
File file_02 = new File("F:\\G");
move(file_01,file_02);
}
private static void move(File srcFile, File desFile) {
if (srcFile == null)return;
File[] files = srcFile.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
File newDir = new File(desFile + "/" + file.getName());
newDir.mkdirs();
move(file, newDir);
} else {
File newFile = new File(desFile, file.getName());
copy(file, newFile);
}
}
}
}
private static void copy(File srcFile, File desFile){
try(FileOutputStream outputStream = new FileOutputStream(desFile);
FileInputStream inputStream = new FileInputStream(srcFile)){
int len = 0;
byte[] bytes = new byte[1024];
while ((len = inputStream.read(bytes)) != -1){
outputStream.write(bytes,0,len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}