java_复制文件及目录到另一个盘下

本文介绍了一个简单的文件及文件夹复制工具实现方法。该工具能够递归地复制指定目录下的所有文件到新的目标位置,并保留原有的文件结构。文章通过具体代码展示了如何使用Java的输入输出流进行文件读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • package com.lian5;


    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 FIleTest {
     public static void main(String[] args) throws IOException {
    File file = new File("C:\\Users\\远方\\Desktop\\作业");
    File newFile = new File("D:\\迅雷下载");
    copy(file,newFile);

    }


    public static void copy(File file,File newFile) throws IOException {

    File newFiles = new File(newFile,file.getName());      
    File[] filearray = file.listFiles();
    System.out.println(filearray.length);
    newFiles.mkdir();
    for(File files :filearray){
    if(files.isDirectory()){
    //newFiles.mkdir();
       copy(files,newFiles);
       
    }else{
    //newFiles.mkdir();
    write(files,newFiles);
    }
    }

    }
    public static void write(File file,File newFile) throws IOException{
    File newFiles = new File(newFile,file.getName());
    BufferedOutputStream fos =new BufferedOutputStream(new FileOutputStream(newFiles));
    BufferedInputStream fis =new BufferedInputStream(new FileInputStream(file));
    byte[] bys = new byte[1024];
    int len = 0;
    while((len=fis.read(bys))!=-1){
    fos.write(bys, 0, len);
    }

    }
    }
下面的代码示例演示了如何将源符中的所有文件和子文件夹复制到目标符中。 ```java import java.io.*; public class FileCopyExample { public static void main(String[] args) throws IOException { String sourceDrive = "C:"; //源符 String targetDrive = "D:"; //目标符 copyDirectory(new File(sourceDrive), new File(targetDrive)); System.out.println("文件复制完成。"); } private static void copyDirectory(File sourceDir, File targetDir) throws IOException { if (!targetDir.exists()) { targetDir.mkdir(); } for (File file : sourceDir.listFiles()) { if (file.isDirectory()) { File newDir = new File(targetDir.getAbsolutePath() + File.separator + file.getName()); copyDirectory(file, newDir); } else { File newFile = new File(targetDir.getAbsolutePath() + File.separator + file.getName()); copyFile(file, newFile); } } } private static void copyFile(File sourceFile, File targetFile) throws IOException { try (InputStream inputStream = new FileInputStream(sourceFile); OutputStream outputStream = new FileOutputStream(targetFile)) { byte[] buffer = new byte[1024]; int length; while ((length = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, length); } } } } ``` 注意:在实际使用中,请修改源符和目标符的值。此外,还需注意,如果目标符下已经存在同名的文件文件夹,本代码会覆盖它们。因此,在复制文件前请确保目标路径为空或已经备份好原路径下同名的文件文件夹
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值