使用java实现文件夹递归的拷贝和文件的复制(一)
2019-05-22 17:34
399 查看
如何用java代码实现文件夹的递归复制和复制文件
1、定义一个变量用来存放复制的文件数量
static int size=0;//确定这个文件夹共有多少个文件
2、写一个基本的处理步骤
1、检查路径是否可达
2.、判断所在文件夹是否相同,以便于确定是否在文件是否重复
3、判断是否为文件夹,或者文件,如果是文件的话,就直接进行复制
4、递归的调用
3、java代码进行实现
1、这一部分是组要介绍大致的框架
//复制函数 static void dirCopy(String src_abspath,String dest_abspath) throws IOException { File path1 = new File(src_abspath); File path2 = new File(dest_abspath); //1.检查路径是否可达 //(代码过多就省略展示了) //2.判断所在文件夹是否相同 if(!path1.getPath().equals(path2.getPath())) { //3.判断是否是文件夹或者是文件 if(path1.isFile()) { path2 = new File(path2.getPath()+"/"+path1.getName()); copyFile(path1, path2);//复制文件的部分,代码在下面 return ; }else { //4.递归调用 function1(path1, path2);//进行递归的部分,代码在下面 } }else { return ; //(代码过多就省略展示了,这一部分是复制的路径和源文件的路径相同的情况下) }
2、这一部分是实现递归函数的部分
//建立递归函数 private static void function1(File file1,File file2) throws IOException { if(file1==null||!file1.exists()) { return; //递归头 }else { //递归体 if(file1.isFile()) { //如果是直接修改file2的话,会影响下一次的循环中的file2,所以我建立新的file3 File file3 = new File(file2.getPath()+"/"+file1.getName()); //这一步必须执行,否者找不到文件 file3.createNewFile(); copyFile(file1, file3); //复制代码 }else { //每次根深层次的复制的时候,必须提前将两个file对象的进行同步 file2 = new File(file2.getPath()+"/"+file1.getName()); file2.mkdirs(); for (File file : file1.listFiles()) { function1(file, file2); } } } }
3、IO流进行操作:文件复制
//复制文件 static void copyFile(File file1,File file2) { OutputStream os=null; InputStream is = null; try { os = new FileOutputStream(file2); is = new FileInputStream(file1); byte[] b = new byte[1024*4]; int item = -1; while((item = is.read(b))!=-1) { os.write(b, 0, item); } os.flush(); size++; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { try { if(is!=null) { is.close(); } } catch (IOException e) { e.printStackTrace(); } try { if(os!=null) { os.close(); } } catch (IOException e) { e.printStackTrace(); } } }
4、执行的结果
public static void main(String[] args) throws IOException { dirCopy("E:/qq文件/190517","D:/copy"); System.out.println("文件数:"size); }
文件数: 169
相关文章推荐
- 使用java递归实现文件及文件夹的复制
- 使用JAVA实现比较两个文件夹下的文件新增和修改情况,并复制到新的目录(实现增量更新项目)
- java递归实现复制一个文件夹下所有文件的功能
- Java笔记之io——递归创建与删除多层文件夹,字符流实现文件复制
- Java中递归实现复制文件夹和文件
- java 实现文件/文件夹复制、删除、移动(一)
- java递归实现文件的删除和拷贝
- Java实现文件或文件夹的复制到指定目录实例
- java实现文件拷贝(复制)
- java删除文件夹 Java中实现复制文件或文件夹
- java 文件、文件夹 递归复制、移动
- java递归实现文件夹文件的遍历输出
- java递归实现文件的删除和拷贝
- Java中实现复制文件或文件夹
- java学习---------IO流学习---文件流inputstream outputstream(三)实现文件和文件夹的复制 删除
- MFC 运用CFileFind 类 递归实现文件夹的 复制 (MFC 文件操作 二)
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
- Node.js使用递归实现遍历文件夹中所有文件
- java扫描文件夹下面的所有文件(递归与非递归实现)
- 一道Java面试题之实现复制、删除、剪切文件(文件夹的实现)的snippet