文件复制操作

简介: 文件复制操作

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

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

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


目录
相关文章
|
7月前
|
Linux 编译器
目录文件篇
目录文件篇
45 # 实现文件拷贝功能
45 # 实现文件拷贝功能
56 0
|
Java Apache
java复制文件的4种方式及拷贝文件到另一个目录下与删除单个文件和删除整个文件夹
java复制文件的4种方式及拷贝文件到另一个目录下与删除单个文件和删除整个文件夹
960 0
目录的操作
目录的操作
106 0
|
Unix Shell 测试技术
Python 文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件
Python 文件复制&按目录树结构拷贝&批量删除目录及其子目录下的文件
153 0
C#编程-34:拷贝整个文件夹
C#编程-34:拷贝整个文件夹
文件和文件夹的操作——文件夹的操作
文件和文件夹的操作——文件夹的操作
149 0
文件和文件夹的操作——文件夹的操作
文件和文件夹的操作——文件操作
文件和文件夹的操作——文件操作
117 0