java递归实现复制一个文件夹下所有文件功能

今天开始学习java的IO,学了一个复制文件的例子程序后想自己实现以下如何复制一个文件夹,复制文件的例子程序如下:

创新互联建站服务项目包括固原网站建设、固原网站制作、固原网页制作以及固原网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,固原网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到固原省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

package io.github.liuzhan214;
import java.io.File;
import java.io.IOException;

public class Main {

  void solve() {
    File file = new File("F:\\javaIOTest\\new.txt");
    if(!file.exists()) {
      try {
        file.createNewFile();
      } 
      catch(IOException e) {
        e.printStackTrace();
      }
    }
    else {
      System.out.println(file.getName());
    }
    File dir = new File("F:\\javaIOTest");
    System.out.println(dir.getName());
    if(dir.isDirectory()) {
      String[] filename = dir.list();
      for(String str: filename) {
        File tempFile = new File(dir.getPath() + File.separator + str);
        if(tempFile.isFile()) {
          System.out.println("File: " + tempFile.getPath());
        }
        else if(tempFile.isDirectory()) {
          System.out.println("Dir: " + tempFile.getPath());
        }
      }
    }
  }
  public static void main(String[] args) {
    Main main = new Main();
    main.solve();
  }
}

createNewFile可以创建一个文件
mkdir()可以创建一个目录
FileInputStream和FileOutoutStream可以实现文件的复制

实现文件夹复制的代码如下

package io.github.liuzhan214;

import java.util.Scanner;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Main {

  Scanner scanner = new Scanner(System.in);

  void solve() {
    String inputString = scanner.next();
    String outputString = scanner.next();
    File inputFile = new File(inputString);
    File outputFile = new File(outputString);
    if(inputFile.exists() == false || outputFile.exists() == false) {
      System.out.println("输入或者输出路径不合法!"); return;
    }
    File sourceFile = inputFile;
    File destFile = new File(outputFile.getPath() + File.separator + inputFile.getName());
    try {
      myCopy(sourceFile,destFile);
    } catch(Exception e) {
      System.out.println("复制出现错误!"); return;
    }
    System.out.println(sourceFile.getPath() + "->" + destFile.getPath() + "复制成功!"); 
  }

  void myCopy(File sourceFile,File destFile) throws Exception{
    //保证sourceFile一定存在,destFile一定不存在,因此先创建destFile
    if(sourceFile.isFile()) destFile.createNewFile();
    else if(sourceFile.isDirectory()) destFile.mkdir();

    if(sourceFile.isFile()) copy(sourceFile,destFile);
    else if(sourceFile.isDirectory()) {
      File[] files = sourceFile.listFiles();
      for(File ele : files) {
        File newDestFile = new File(destFile.getPath() + File.separator + ele.getName());
        myCopy(ele,newDestFile);
      }
    }
  }
  void copy(File sourceFile,File destFile) throws Exception{
    //保证sourceFile一定存在,destFile一定存在
    FileInputStream inputStream = new FileInputStream(sourceFile);
    FileOutputStream outputStream = new FileOutputStream(destFile);
    byte[] arr = new byte[256];
    int len = 0;
    while((len = inputStream.read(arr)) > 0) {
      outputStream.write(arr, 0, len);
    }
    inputStream.close();
    outputStream.close();
  }

  void close() {
    scanner.close();
  }
  public static void main(String[] args) {
    Main main = new Main();
    main.solve();
    main.close();
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。


分享标题:java递归实现复制一个文件夹下所有文件功能
标题路径:http://bzwzjz.com/article/igegse.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都商城网站建设 网站设计 成都网站建设公司 LED网站设计方案 成都网站建设 成都网站制作 营销型网站建设 泸州网站建设 营销型网站建设 阿坝网站设计 外贸网站建设 成都网站建设公司 定制级高端网站建设 网站设计 成都企业网站制作 高端定制网站设计 成都网站建设 四川成都网站制作 高端网站设计 手机网站制作 网站制作 企业手机网站建设