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();
  }
}

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

(0)

相关推荐

  • java使用缓冲流复制文件的方法

    本文实例为大家分享了java使用缓冲流复制文件的具体代码,供大家参考,具体内容如下 [1] 程序设计 /*------------------------------- 1.缓冲流是一种处理流,用来加快节点流对文件操作的速度 2.BufferedInputStream:输入缓冲流 3.BufferedOutputStream:输出缓冲流 4.在正常的Java开发中都使用缓冲流来处理文件,因为这样可以提高文件处理的效率 5.这里设计程序:使用缓冲流复制一个较大的视频文件 -------------

  • java复制文件的4种方式及拷贝文件到另一个目录下的实例代码

    尽管Java提供了一个可以处理文件的IO操作类. 但是没有一个复制文件的方法. 复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候. 然而有几种方法可以进行Java文件复制操作,下面列举出4中最受欢迎的方式. 1. 使用FileStreams复制 这是最经典的方式将一个文件的内容复制到另一个文件中. 使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B. 这是第一个方法的代码: private static void copyFileU

  • java复制文件和java移动文件的示例分享

    复制代码 代码如下: package com.famous.dark.util; import java.io.File;import java.io.FileFilter; public class MyFileFilter implements FileFilter { public boolean accept(File file) {  String fileName = file.getName().toLowerCase();  if (fileName.endsWith(".jar

  • java多线程复制文件的实例代码

    复制代码 代码如下: package com.test; import java.io.FileNotFoundException;  import java.io.IOException;  import java.io.RandomAccessFile; public class FileCoper {      private static final String _ORIGIN_FILE_MODE = "r"; private static final String _TAR

  • java制作复制文件工具代码分享

    复制代码 代码如下: package com.robin; import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Properties; public class FileCopy { // priv

  • Java使用字节流复制文件的方法

    其实用java程序复制文件并不难,具体内容如下 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.LinkedList; import java.util.List; //文件复制 //E:/3.jpg ---> D:/1.jpg public class CopyFileByIo { public static void ma

  • java文件操作工具类实现复制文件和文件合并

    两个方法:1.复制一个目录下面的所有文件和文件夹2.将一个文件目录下面的所有文本文件合并到同一个文件中 复制代码 代码如下: package com.firewolf.test; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException; public class FileReaderUtil { public static void

  • Java输入输出流复制文件所用时间对比

    废话不多说,关键代码如下所述: package com.edu.xynu; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class IOUnitCopy {

  • 4种java复制文件的方式

    尽管Java提供了一个可以处理文件的IO操作类,但是没有一个复制文件的方法.复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候.然而有几种方法可以进行Java文件复制操作,下面列举出4中最受欢迎的方式. 1. 使用FileStreams复制 这是最经典的方式将一个文件的内容复制到另一个文件中. 使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B. 这是第一个方法的代码: private static void copyFileUsin

  • java实现在复制文件时使用进度条(java实现进度条)

    思路分析: 因为既要有操作面板又要有进度条,所以肯定要出现两个继承JFrame类的窗体.先看被调用的进度条窗体,它不需要手动操作,所以类的内部实现一个方法就可以了.因为设计文件操作,所以要捕获异常.首先根据要复制的文件创建File对象,以及根据复制后文件的保存地址创建File对象,然后创建FileOutputStream对象,再创建FileInputStream对象,之后是ProgressMonitorInputStream对象,然后读取文件,如果总耗时超过2秒,将会自动弹出一个进度监视窗口.接

随机推荐