提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文件拷贝分为两种情况:一种是在同一目录下进行文件拷贝,另一种是在不同目录下进行文件拷贝。对于第一种情况,我们只需要使用Java的文件输入输出流(FileInputStream和FileOutputStream)即可轻松实现;而对于第二种情况,我们还需要使用Java的文件类(File)来获取源文件和目标文件的路径信息。本篇文章主要就第二种情况进行操作。
提示:以下是本篇文章正文内容,下面案例可供参考
在D盘的aaa文件夹中创建一个多级文件夹bbb以及空文件夹ccc,将bbb文件夹中的文件拷贝到ccc中。
代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
代码如下:
File src = new File("D:\\aaa\\bbb");
代码如下:
File dest = new File("D:\\aaa\\ccc");
注意点:拷贝需要以文件开始,文件结束。
先遍历数据源对象,以文件开始没有问题
*通过路径拼接的方法使目的地路径也变成文件
代码如下:
private static void copydir(File src, File dest) throws IOException {
dest.mkdirs();//创建文件
//递归
//1.进入数据源
File[] files = src.listFiles();
//2.遍历数组
for (File file : files) {
if(file.isFile()){
//3.判断为文件,拷贝
//细节:拷贝需要以文件开始,文件结束
//要拷贝的文件
FileInputStream fis = new FileInputStream(file);
//文件的目的地
FileOutputStream fos = new FileOutputStream(new File(dest,file.getName()));//重点,操作方法是进行路径的拼接
byte[] bytes = new byte[1024];
int len;
while ((len = fis.read(bytes)) != -1){
fos.write(bytes,0,len);
}
fos.close();
fis.close();
}else {
//4.判断为文件夹,递归
copydir(file,new File(dest,file.getName()));
}
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Text1 {
public static void main(String[] args) throws IOException {
//拷贝一个文件夹,考虑子文件夹
//1.创建对象表示数据源
File src = new File("D:\\aaa\\bbb");
//2.创建对象表示目的地
File dest = new File("D:\\aaa\\ccc");
//3.调用方法进行拷贝
copydir(src,dest);
}
/*
* 作用:拷贝文件夹
* 参数一:数据源
* 参数二:目的地
*
* */
private static void copydir(File src, File dest) throws IOException {
dest.mkdirs();//创建文件
//递归
//1.进入数据源
File[] files = src.listFiles();
//2.遍历数组
for (File file : files) {
if(file.isFile()){
//3.判断为文件,拷贝
//细节:拷贝需要以文件开始,文件结束
//要拷贝的文件
FileInputStream fis = new FileInputStream(file);
//文件的目的地
FileOutputStream fos = new FileOutputStream(new File(dest,file.getName()));//重点,操作方法是进行路径的拼接
byte[] bytes = new byte[1024];
int len;
while ((len = fis.read(bytes)) != -1){
fos.write(bytes,0,len);
}
fos.close();
fis.close();
}else {
//4.判断为文件夹,递归
copydir(file,new File(dest,file.getName()));
}
}
}
}
文件夹拷贝依然与利用遍历并判断多级文件夹中的文件的类似,使用递归思想,第一步进入数据源,第二步遍历数组,第三步对遍历到的进行判断,若是文件,进行题目要求的操作,如果不是,则继续进行递归。只是拷贝文件夹中要注意以文件开始,以文件结束,不能直接以文件夹为单位进行拷贝。