欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java 文件复制

程序员文章站 2022-06-10 11:05:56
...

实现文件复制有多种方法

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;
	}

 

相关标签: file' copy