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

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

相关文章
|
2月前
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
121 34
|
4月前
|
存储 Java API
【JavaEE】——文件IO(万字长文)
文件路径,文本文件,二进制文件,File类,文件流,字节流(InputStream,OutputStream)字符流(Reader,Writer)
|
5月前
|
Java 测试技术 Maven
Maven clean 提示文件 java.io.IOException
在使用Maven进行项目打包时,遇到了`Failed to delete`错误,尝试手动删除目标文件也失败,提示`java.io.IOException`。经过分析,发现问题是由于`sys-info.log`文件被其他进程占用。解决方法是关闭IDEA和相关Java进程,清理隐藏的Java进程后重新尝试Maven clean操作。最终问题得以解决。总结:遇到此类问题时,可以通过任务管理器清理相关进程或重启电脑来解决。
|
6月前
|
安全 NoSQL Java
一文搞懂网络通信的基石✅IO模型与零拷贝
【10月更文挑战第1天】本文深入探讨了网络通信中的IO模型及其优化方法——零拷贝技术。首先介绍了IO模型的概念及五种常见类型:同步阻塞、同步非阻塞、多路复用、信号驱动和异步IO模型。文章详细分析了每种模型的特点和适用场景,特别是多路复用和异步IO在高并发场景中的优势。接着介绍了零拷贝技术,通过DMA直接进行数据传输,避免了多次CPU拷贝,进一步提升了效率。最后总结了各种模型的优缺点,并提供了相关的代码示例和资源链接。
一文搞懂网络通信的基石✅IO模型与零拷贝
|
6月前
|
搜索推荐 索引
【文件IO】实现:查找文件并删除、文件复制、递归遍历目录查找文件
【文件IO】实现:查找文件并删除、文件复制、递归遍历目录查找文件
99 2
|
6月前
|
编解码 Java 程序员
【文件IO】文件内容操作
【文件IO】文件内容操作
111 2
|
6月前
|
存储 Java API
【文件IO】文件系统操作
【文件IO】文件系统操作
92 1
|
7月前
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。
401 12
|
6月前
|
存储 Java 程序员
【Java】文件IO
【Java】文件IO
69 0
|
7月前
|
Linux C语言
C语言 文件IO (系统调用)
本文介绍了Linux系统调用中的文件I/O操作,包括文件描述符、`open`、`read`、`write`、`lseek`、`close`、`dup`、`dup2`等函数,以及如何获取文件属性信息(`stat`)、用户信息(`getpwuid`)和组信息(`getgrgid`)。此外还介绍了目录操作函数如`opendir`、`readdir`、`rewinddir`和`closedir`,并提供了相关示例代码。系统调用直接与内核交互,没有缓冲机制,效率相对较低,但实时性更高。

热门文章

最新文章