用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。