IO流篇 -- 基于io流实现文件夹拷贝(拷贝子文件夹及子文件夹内文件)满满的干货

简介: IO流篇 -- 基于io流实现文件夹拷贝(拷贝子文件夹及子文件夹内文件)满满的干货

题目:利用IO流实现文件夹拷贝,需拷贝子文件夹以及子文件夹的文件。

解题思路:利用递归实现文件夹拷贝,一层层往里进,看是否有文件,若有,执行前一遍复制的操作,这样就达到了拷贝文件夹以及子文件夹。

话不多说,上代码:

public class FileCopy {

    public static void main(String[] args) {
        //源文件
        String path = "C:/Users/Desktop/0611";
        //目标地址
        String path2 = "C:/Users/Desktop/0611(复制版)";
        //将目标路径放入File类中
        File f2 = new File(path2);
        //检测文件路径是否存在,若不存在,则创建文件夹,防止文件未找到异常导致程序崩溃
        if (!f2.exists()) {
            //创建文件夹
            f2.mkdirs();
        }
        //调用方法,传入实参,开始拷贝文件夹
        copyFile(path, path2);
    }
    
    /**
     * 拷贝文件,利用递归拷贝子文件夹以及文件
     * @param path1    源文件路径
     * @param path2    目标文件路径
     */
    public static void copyFile(String path1, String path2) {
        File file = new File(path1);
        File[] files = file.listFiles();
        for (File file2 : files) {
            if (file2.isDirectory()) {
                String newPath = path2 + File.separator + file2.getName();
                File f2 = new File(newPath);
                System.out.println(f2.getAbsolutePath());
                f2.mkdirs();
                System.out.println("创建成功~");
                copyFile(file2.getAbsolutePath(), newPath);
            }
            if (file2.isFile()) {
                try {
                    InputStream is = new FileInputStream(file2.getAbsolutePath());
                    int num = is.available();
                    byte[] bs = new byte[num];
                    OutputStream os = new FileOutputStream(path2 + File.separator + file2.getName());
                    int realLen = is.read(bs, 0, bs.length);
                    os.write(bs, 0, realLen);
                    System.out.println("写入成功~");
                    if (is != null) {
                        is.close();
                    }
                    if (os != null) {
                        os.close();
                    }
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
    
}

如果你觉得这篇文章有用,那就支持一下吧,感谢点赞的老铁😜🤞

相关文章
|
1月前
|
Java Unix Windows
|
10天前
|
C++
Open3D File Io 文件IO
Open3D File Io 文件IO
|
17天前
|
存储 缓存 Unix
【嵌入式软件工程师面经】Linux文件IO
【嵌入式软件工程师面经】Linux文件IO
20 1
|
21天前
|
存储 安全 Unix
【.Net Core】深入理解IO之文件和目录
【.Net Core】深入理解IO之文件和目录
29 4
|
20天前
|
Java
io读两个文件,生成list 排重后写本地文件(Java)
io读两个文件,生成list 排重后写本地文件(Java)
|
1天前
使用字节输入流报错 java.io.FileNotFoundException: srcdruid.properties (系统找不到指定的文件。)
使用字节输入流报错 java.io.FileNotFoundException: srcdruid.properties (系统找不到指定的文件。)
6 0
|
27天前
|
Java
|
27天前
|
Java API
文件IO (File对象, 文件读写)
文件IO (File对象, 文件读写)
26 2
|
1月前
|
消息中间件 关系型数据库 Kafka
实时计算 Flink版操作报错之在执行任务时遇到了一个IO错误,具体表现为无法从本地主机(localhost)下载文件,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
1月前
|
C++ 数据格式
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]

热门文章

最新文章