您现在的位置是:网站首页> 内容页

IO流-文件夹的拷贝

  • 95996868九五至尊官网
  • 2019-04-24
  • 331人已阅读
简介文件夹的拷贝操作要求:完成文件夹的拷贝,包括子目录的拷贝和所有文件的拷贝分析:首先,得在目标目录下创建一个与源文件夹名称相同的文件夹遍历源文件夹中的所有文件对象,判断子文件是目录还是文

文件夹的拷贝操作

要求:

完成文件夹的拷贝,包括子目录的拷贝和所有文件的拷贝

分析:

首先,得在目标目录下创建一个与源文件夹名称相同的文件夹遍历源文件夹中的所有文件对象,判断子文件是目录还是文件如果是目录,递归调用第一步的操作如果是文件,用缓冲流文件字节流完成对文件的复制创建源和目标File f = new File("路径");创建输入流和输出流对象,肯定得传上面的源和目标输入输出操作,输入操作得定义一个缓冲数组和定义一个返回读取长度的len关闭流完成

代码:

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;public class CopyAllFile { public static void main(String[] args) throws Exception { //1.创建源和目标 File srcDir = new File("D:/资料/test"); File destDir = new File("D:/资料/test_copy"); if(!destDir.exists()){ destDir.mkdirs(); } copy(srcDir,destDir); } public static void copy(File src,File dest) throws Exception{ if(src.isDirectory()){ //是目录,就在目标文件夹中创建与源文件夹相同名称的文件夹 File destDir = new File(dest,src.getName()); destDir.mkdir(); //列举出所有的文件对象 File[] fs = src.listFiles(); //遍历所有的文件对象 for (File file : fs) { copy(file,destDir); } }else{ File file1 =new File(dest,src.getName()); copyFile(src,file1); } } public static void copyFile(File inputFile,File outputFile) throws Exception{ BufferedInputStream in = new BufferedInputStream(new FileInputStream(inputFile)); BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outputFile)); byte[] buffer = new byte[1024]; int len = -1; while((len = in.read(buffer)) != -1){ out.write(buffer, 0, len); } in.close(); out.close(); }}

当然,也可以有这样的需求,比如,我只想复制.avi的视频文件,那么这时候就得有一个筛选器,java给我我们提供了:

File[] fs = dir.listFiles(FilenameFilter的实例)必须覆盖类中的accept方法 boolean accept(File dir,String name){}

File[] fs = srcDir.listFiles(new FilenameFilter(){ @Override public boolean accept(File dir, String name){ return new File(dir,name).isFile() && name.endsWith(".java"); }});

文章评论

Top