创建类CopyFile ,在该类中创建copy()方法,该方法接受文件数组和目标文件夹两个参数,如果目标文件夹不存在,则调用mkdir()方法创建文件夹,然后在循环中将文件数组中的每个文件对象写到目标文件夹中。
package CopyFile;
import java.io.*;
public class CopyFile { //创建类CopyFile用于复制文件夹中的文件
public static void copy(File[] f1,File file ) {
if(!file.exists()) //如果文件夹不存在
file.mkdir(); //新建文件夹
for(int i=0;i<f1.length;i++){
if(f1[i].isFile()){ //判断f1[i]是否是文件类型
try{
FileInputStream fis = new FileInputStream(f1[i]); //创建文件输出流对象fis
//创建文件输出流对象out
FileOutputStream out = new FileOutputStream(new File(file.getPath()+file.separator+f1[i].getName()));
int count = fis.available(); //求数据项的数目
byte[] data = new byte[count];
if((fis.read(data))!=-1){ //判断是否读到了fis的末尾
out.write(data); //复制文件内容,向输出流对象out中写数据
}
out.close(); //关闭输出流对象out
fis.close(); //关闭输入流对象fis
}catch(Exception e){ //抛出异常
e.printStackTrace();
}
}
if(f1[i].isDirectory()){ //函数isDirectory()是用来判断是否是文件夹类型的,如果是文件夹类型则完成下列操作
File des = new File(file.getPath()+File.separator+f1[i].getName()); //创建File类对象des用来
//存储目标文件夹的路径 separator 是分割符,此处是调用File类的分隔符。
des.mkdir(); //在目标文件夹中创建相同的文件夹
copy(f1[i].listFiles(),des); //递归调用的方法本身
}
}
}
public static void main(String[ ] args){
File sourFile = null;
File desFile = null;
String sourFolder = "D:/JavaTest/hello"; //可以修改源文件夹路径
String desFolder = "D:/JavaTest/copy"; //可以修改的目标文件夹路径
sourFile = new File(sourFolder);
if(!sourFile.isDirectory()||!sourFile.exists()){ //判断(源文件夹)和(源文件)是否存在
System.out.println("源文件夹不存在!!!");
}
desFile = new File(desFolder);
desFile.mkdir(); //创建目标文件夹
copy(sourFile.listFiles(),desFile); //调用copy方法,将源文件复制到目标文件夹中
System.out.println("文件夹复制成功!!!"); //输出提示信息
}
} |
|