文件复制操作

简介: 文件复制操作

对于某些文件进行操作时,看文件的重要性, 最好做个备份,不然做了修改,没了记录, 后悔都来不及。这点意识还是要一定到位的。特别是对一些重要文件的操作。不要动不动就搞删除覆盖, 这种删除后,要是恢复就有点麻烦了, 所以搞啥系统级文件时,做个备份是没错,操作错了,可能还有后悔药吃。好了,上代码, 看下代码处理文件复制,很简单的一顿操作。

/**
     * 复制单个文件
     *
     * @param srcFileName
     *            待复制的文件名
     * @param destFileName
     *            目标文件名
     * @param overlay
     *            如果目标文件存在,是否覆盖
     * @return 如果复制成功,则返回true,否则返回false
     */
    public static boolean copyFile(String srcFileName, String destFileName,
                                   boolean overlay) {
        // 判断原文件是否存在
        File srcFile = new File(srcFileName);
        if (!srcFile.exists()) {
            log.info("复制文件失败:原文件" + srcFileName + "不存在!");
            return false;
        } else if (!srcFile.isFile()) {
            log.info("复制文件失败:" + srcFileName + "不是一个文件!");
            return false;
        }
        // 判断目标文件是否存在
        File destFile = new File(destFileName);
        if (destFile.exists()) {
            // 如果目标文件存在,而且复制时允许覆盖。
            if (overlay) {
                // 删除已存在的目标文件,无论目标文件是目录还是单个文件
                log.info("目标文件已存在,准备删除它!");
                if (!destFile.delete()) {
                    log.info("复制文件失败:删除目标文件" + destFileName + "失败!");
                    return false;
                }
            } else {
                log.info("复制文件失败:目标文件" + destFileName + "已存在!");
                return false;
            }
        } else {
            if (!destFile.getParentFile().exists()) {
                // 如果目标文件所在的目录不存在,则创建目录
                log.info("目标文件所在的目录不存在,准备创建它!");
                if (!destFile.getParentFile().mkdirs()) {
                    log.info("复制文件失败:创建目标文件所在的目录失败!");
                    return false;
                }
            }
        }
        // 准备复制文件 // 读取的位数
        int byteread = 0;
        InputStream in = null;
        OutputStream out = null;
        try {
            // 打开原文件
            in = new FileInputStream(srcFile);
            // 打开连接到目标文件的输出流
            out = new FileOutputStream(destFile);
            byte[] buffer = new byte[1024];
            // 一次读取1024个字节,当byteread为-1时表示文件已经读完
            while ((byteread = in.read(buffer)) != -1) {
                // 将读取的字节写入输出流
                out.write(buffer, 0, byteread);
            }
            log.info("复制单个文件" + srcFileName + "至" + destFileName + "成功!");
            return true;
        } catch (Exception e) {
            log.info("复制文件失败:" + e.getMessage());
            return false;
        } finally {
            // 关闭输入输出流,注意先关闭输出流,再关闭输入流
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

这个也可以做成批量的,批量的文件的话,操作,无非就是把文件搞成集合来装。好了,这些都是简单操作。 文件操作完后,切记,要关闭文件流,不然就一直占着资源不释放。


目录
相关文章
|
人工智能 数据可视化 数据挖掘
【python】python职业人群体检数据分析(代码+数据)【独一无二】
【python】python职业人群体检数据分析(代码+数据)【独一无二】
|
Windows
Keil5中恢复默认布局-解决左边栏,底部栏位置不是默认布局
Keil5中恢复默认布局-解决左边栏,底部栏位置不是默认布局
1558 0
|
Java 微服务 Spring
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(六)(优化篇)开发篇-如何解决微服务开发环境请求实例转发到别人机器问题
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(六)(优化篇)开发篇-如何解决微服务开发环境请求实例转发到别人机器问题
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(六)(优化篇)开发篇-如何解决微服务开发环境请求实例转发到别人机器问题
|
缓存 搜索推荐 安全
互联网人不可或缺的资源搜索引擎
我们改变不了世界,是世界改变了我们。Designed by QianYu1.猎手导航搜索网站简介史上最强大的资源搜索引擎,猎手导航集搜索引擎搜索、社交搜索、BT磁力搜索、学术文档搜索...
13111 0
|
10月前
|
存储 运维 数据可视化
如何为微服务实现分布式日志记录
如何为微服务实现分布式日志记录
625 1
|
11月前
|
前端开发 持续交付 开发工具
理解前端开发中的 Git - Rebase
Git Rebase 是前端开发中常用的一种版本控制操作,用于将一个分支的更改整合到另一个分支。与合并(Merge)不同,Rebase 可以使提交历史更加线性整洁,有助于保持代码库的清晰和可维护性。通过 Rebase,开发者可以将特性分支的改动应用到主分支上,同时保留或重写提交记录。
|
11月前
|
存储 人工智能 自然语言处理
人工智能与未来工作:机遇与挑战
【10月更文挑战第27天】 本文探讨了人工智能(AI)对未来工作的影响,重点分析了AI技术带来的机遇与挑战。通过具体案例和数据,展示了AI如何改变传统行业,创造新的就业机会,同时也提出了应对策略,帮助读者理解并准备迎接这一变革。
|
存储 C++ 容器
C++入门8——vector的使用
C++入门8——vector的使用
901 0
|
数据处理 Python
【Python】已解决:raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+‘; not supported’) xlrd.biffh.XLRD
【Python】已解决:raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+‘; not supported’) xlrd.biffh.XLRD
397 1