Skip to main content
 首页 » 编程设计

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

2022年10月05日35thcjp

今天开始学习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(); 
  } 
}

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


本文参考链接:https://www.yisu.com/zixun/200839.html