用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

java复制文件(如果目标文件存在,是否覆盖)

2012-11-22 作者: 程序猿style举报

[java]代码库

/**
 * 复制单个文件
 *
 * @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()) {
        System.out.println("复制文件失败:原文件" + srcFileName + "不存在!");
        return false;
    } else if (!srcFile.isFile()) {
        System.out.println("复制文件失败:" + srcFileName + "不是一个文件!");
        return false;
    }
    // 判断目标文件是否存在
    File destFile = new File(destFileName);
    if (destFile.exists()) {
        // 如果目标文件存在,而且复制时允许覆盖。
        if (overlay) {
            // 删除已存在的目标文件,无论目标文件是目录还是单个文件
            System.out.println("目标文件已存在,准备删除它!");
            if (!DeleteFileUtil.delete(destFileName)) {
                System.out.println("复制文件失败:删除目标文件" + destFileName + "失败!");
                return false;
            }
        } else {
            System.out.println("复制文件失败:目标文件" + destFileName + "已存在!");
            return false;
        }
    } else {
        if (!destFile.getParentFile().exists()) {
            // 如果目标文件所在的目录不存在,则创建目录
            System.out.println("目标文件所在的目录不存在,准备创建它!");
            if (!destFile.getParentFile().mkdirs()) {
                System.out.println("复制文件失败:创建目标文件所在的目录失败!");
                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);
        }
        System.out.println("复制单个文件" + srcFileName + "至" + destFileName
                + "成功!");
        return true;
    } catch (Exception e) {
        System.out.println("复制文件失败:" + 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();
            }
        }
    }
}


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...