Java 文件复制

实现文件复制有多种方法

1 使用Files 的 copy

2 使用stream 如 FileWriter FileReader 实现

3 使用FileChannel 

推荐使用 FileChannel ,FileChannel 多线程 速度快 没有文件编码问题

但是FileChannel是 Java7的新特性

1 使用File copy

public static boolean copyFile1(File fromFile, File toFile)
			throws IOException {
		if (fromFile == null || toFile == null) {
			return false;
		}

		Path destination = Files.copy(fromFile.toPath(), toFile.toPath(),
				StandardCopyOption.REPLACE_EXISTING);
		if (destination.equals(toFile.toPath())) {
			return true;
		}
		return false;
	}

2 使用流

public static boolean copyFile2(File fromFile, File toFile) {
		if (fromFile == null || toFile == null) {
			return false;
		}

		// copy file
		try (BufferedReader reader = new BufferedReader(
				new FileReader(fromFile));
				BufferedWriter writer = new BufferedWriter(
						new FileWriter(toFile))) {
			String line = null;
			while ((line = reader.readLine()) != null) {
				writer.write(line);
				writer.newLine();
			}
			return true;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

3 使用FileChannel

public static boolean copyFile3(File fromFile, File toFile) {
		if (fromFile == null || toFile == null) {
			return false;
		}

		// copy file
		try (FileInputStream in = new FileInputStream(fromFile);
				FileOutputStream ou = new FileOutputStream(toFile);
				FileChannel ci = in.getChannel();
				FileChannel co = ou.getChannel()) {
			long size = ci.transferTo(0, ci.size(), co);
			if (size == fromFile.length()) {
				return true;
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return false;
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值