复制单级文件夹
- 步骤
①创建数据源目录File对象,路径是E:\test
②获取数据源目录File对象的名称 (itcast)
③创建目的地目录File对象,路径名(自拟)
④判断目的地File对象对应的目录是否存在,如果不存在就创建
⑤获取数据源目录下所以的File数组
⑥遍历File数组,得到每一个File对象,该File对象,其实就是数据源文件
⑦获取数据源文件File对象的名称
⑧创建目的地文件File对象,路径名为目的地+文件File对象名称
⑨复制文件(由于文件不仅仅是文本文件,所以使用缓冲字节流)
public static void main(String[] args) throws IOException {
//创建数据源目录File对象,路径是E:\\test
File dis = new File("E:\\test");
//获取数据源目录File对象的名称 (itcast)
String disName = dis.getName();
//创建目的地目录File对象,路径名(自拟)
String path = "test\\"+disName;
File dos =new File(path);
//判断目的地File对象对应的目录是否存在,如果不存在就创建
if(!dos.exists()){
dos.mkdir();
}
//获取数据源目录下所以的File数组
File[] listFiles = dis.listFiles();
//遍历File数组,得到每一个File对象,该File对象,其实就是数据源文件
for (File f: listFiles) {
//获取数据源文件File对象的名称
String srcname = f.getName();
//创建目的地文件File对象,路径名为目的地+文件File对象名称
File dosfile = new File(dos,srcname);
//复制文件
copy(f,dosfile);
}
}
public static void copy(File src,File dos) throws IOException {
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(src));
BufferedOutputStream bufferedOutputStream =new BufferedOutputStream(new FileOutputStream(dos));
byte[] bytes = new byte[1024];
int len;
while((len = bufferedInputStream.read(bytes))!=-1){
bufferedOutputStream.write(bytes);
}
bufferedInputStream.close();
bufferedOutputStream.close();
}
复制多级文件夹(递归)
- 思路
①创建数据源File对象,
②创建目的地File对象
③写方法实现文件夹的复制,参数为数据源File对象和目的地File对象
④判断数据源File是否是目录
a.在目的地下创建和数据源File名称一样的目录。
b.获取数据源File下所有文件或者目录的File数组
c.遍历该File数组,得到每一个File对象
d.把该File作为数据源File对象,递归调用复制文件夹的方法
public static void main(String[] args) throws IOException {
File file = new File("E:\\test");
File dosfile = new File("F:\\");
copyFolder(file,dosfile);
}
public static void copyFolder(File srcFiles,File desFile) throws IOException {
//判断数据源是否是目录
if (srcFiles.isDirectory()){
//在目的地下创建和数据源file名称一样的目录
String srcFileName = srcFiles.getName();
File newFolder = new File(desFile,srcFileName);
if (!newFolder.exists()){
newFolder.mkdir();
}
//获取数据源File下所有文件或者目录的File数组
File[] listFiles = srcFiles.listFiles();
for (File file:listFiles){
//把该File作为数据源File对象,递归调用复制文件夹的方法
copyFolder(file,newFolder);
}
}else {
//说明是文件,直接复制,用字节流
File newFile = new File(desFile,srcFiles.getName());
copyFile(srcFiles,newFile);
}
}
public static void copyFile(File srcFile,File desFile) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desFile));
byte[] bytes = new byte[1024];
int len;
while ((len=bis.read(bytes))!=-1){
bos.write(bytes);
}
bis.close();
bos.close();
}
网友评论