如何用Java递归方法复制文件夹及其所有文件?

2026-06-10 14:533阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计672个文字,预计阅读时间需要3分钟。

如何用Java递归方法复制文件夹及其所有文件?

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

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

public class CopyFolder { public static void main(String[] args) { File sourceFolder=new File(sourceFolder); File targetFolder=new File(targetFolder);

copyFolder(sourceFolder, targetFolder); }

public static void copyFolder(File sourceFolder, File targetFolder) { if (!targetFolder.exists()) { targetFolder.mkdirs(); }

File[] files=sourceFolder.listFiles(); if (files !=null) { for (File file : files) { if (file.isDirectory()) { copyFolder(file, new File(targetFolder, file.getName())); } else { copyFile(file, new File(targetFolder, file.getName())); } } } }

public static void copyFile(File sourceFile, File targetFile) { try { if (!targetFile.exists()) { targetFile.createNewFile(); }

byte[] buffer=new byte[1024]; int length; try (java.io.FileInputStream fis=new java.io.FileInputStream(sourceFile); java.io.FileOutputStream fos=new java.io.FileOutputStream(targetFile)) { while ((length=fis.read(buffer)) > 0) { fos.write(buffer, 0, length); } } } catch (IOException e) { e.printStackTrace(); } }}

今天开始学习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递归方法复制文件夹及其所有文件?

本文共计672个文字,预计阅读时间需要3分钟。

如何用Java递归方法复制文件夹及其所有文件?

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

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

public class CopyFolder { public static void main(String[] args) { File sourceFolder=new File(sourceFolder); File targetFolder=new File(targetFolder);

copyFolder(sourceFolder, targetFolder); }

public static void copyFolder(File sourceFolder, File targetFolder) { if (!targetFolder.exists()) { targetFolder.mkdirs(); }

File[] files=sourceFolder.listFiles(); if (files !=null) { for (File file : files) { if (file.isDirectory()) { copyFolder(file, new File(targetFolder, file.getName())); } else { copyFile(file, new File(targetFolder, file.getName())); } } } }

public static void copyFile(File sourceFile, File targetFile) { try { if (!targetFile.exists()) { targetFile.createNewFile(); }

byte[] buffer=new byte[1024]; int length; try (java.io.FileInputStream fis=new java.io.FileInputStream(sourceFile); java.io.FileOutputStream fos=new java.io.FileOutputStream(targetFile)) { while ((length=fis.read(buffer)) > 0) { fos.write(buffer, 0, length); } } } catch (IOException e) { e.printStackTrace(); } }}

今天开始学习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递归方法复制文件夹及其所有文件?