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://ybzwz.com/article/igegse.html