资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

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://cdkjz.cn/article/igegse.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220