文件复制操作

简介: 文件复制操作

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

/**
     * 复制单个文件
     *
     * @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();
                }
            }
        }
    }

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


目录
相关文章
|
5月前
|
存储 监控 安全
11.1 文件拷贝移动与删除
在编程中,针对磁盘与目录的操作也是非常重要的,本章将重点介绍如何实现针对文件目录与磁盘的操作方法,其中包括了删除文件,文件拷贝,文件读写,目录遍历输出,遍历磁盘容量信息,磁盘格式化,输出分区表数据,监控目录变化等。
25 0
|
7月前
45 # 实现文件拷贝功能
45 # 实现文件拷贝功能
30 0
|
9月前
|
Java Apache
java复制文件的4种方式及拷贝文件到另一个目录下与删除单个文件和删除整个文件夹
java复制文件的4种方式及拷贝文件到另一个目录下与删除单个文件和删除整个文件夹
445 0
|
10月前
|
Shell Linux
Linux目录与文件的相关操作
0、关机重启命令 关机命令 sudo shutdown -h now 重启命令 sudo reboot 1、目录的切换 打开终端窗口(”ctrl+alt+t“) 一般使用(”pwd“)显示当前所在的目录 比如:当前目录是在home下面的,与用户名相同的文件夹,可以使用(”cd“)命令来切换目录; 进入下载目录(”cd home/a/下载“)这种从给目录开头的一长串路经”叫做绝对路径“; 进入图片目录(”cd .. /图片/“)".."代表当前路径的上级路径,相对于当前的目录而言的”叫做相对路径“,(”.“)代表当前路径; 如果,想快速切换,上一个所在目录可以(”cd -“); 如果,想快速切换
59 0
|
10月前
目录的操作
目录的操作
63 0
|
Unix Shell 测试技术
Python 文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件
Python 文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件
110 0
文件和文件夹的操作——文件夹的操作
文件和文件夹的操作——文件夹的操作
100 0
文件和文件夹的操作——文件夹的操作