`
坏我一锅粥
  • 浏览: 61421 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

12、java复制文件的四种方法

    博客分类:
  • IO
阅读更多
package com.tij.io.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.channels.FileChannel;

import javax.naming.ldap.SortControl;

import org.apache.commons.io.FileUtils;

/**
 * java复杂文件的四种方法
 * @author guoyoujun
 * @date 2014-3-17
 */
public class JavaCopyFile {

	/**
	 * java复杂文件的四种方法
	 * <p>1、传统方法:使用流
	 * <p>2、java.nio.channels.FileChannel
	 * <p>3、Apache Commons IO FileUtils.copyFile()
	 * <p>4、java7 copy()
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		File source = new File("/Users/GYJ/funshion/update/popwind.json");
        File dest = new File("/Users/GYJ/a.json");
        copyFileUsingStream(source, dest);
        copyFileUsingChannel(source, dest);
        copyFileUsingApacheCommonsIO(source, dest);
        copyFileUsingJava7Files(source, dest);
	}
	
	/**
	 * 使用流来复制文件
	 * @param source
	 * @param dest
	 * @throws IOException 
	 */
	private static void copyFileUsingStream(File source, File dest) throws IOException {
		InputStream is = null;
		OutputStream os = null;
		try {
			is = new FileInputStream(source);
			os = new FileOutputStream(dest);
			byte[] buffer = new byte[1024];
			int length;
			while ((length = is.read(buffer)) > 0) {
				os.write(buffer, 0, length);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} finally {
			is.close();
			os.close();
		}
	}
	
	/**
	 * 使用java.nio.channels.FileChannel
	 * @param source
	 * @param dest
	 * @throws IOException 
	 */
	private static void copyFileUsingChannel(File source, File dest) throws IOException {
		FileChannel sourceChannel = null;
		FileChannel destChannel = null;
		try {
			sourceChannel = new FileInputStream(source).getChannel();
			destChannel = new FileOutputStream(dest).getChannel();
			destChannel.transferFrom(sourceChannel, 0, sourceChannel.size());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} finally {
			sourceChannel.close();
			destChannel.close();
		}
	}
	
	
	/**
	 * 使用ApacheCommonsIO(需要commons-io-2.0.1.jar)
	 * @param source
	 * @param dest
	 * @throws IOException 
	 */
	private static void copyFileUsingApacheCommonsIO(File source, File dest) throws IOException {
		// org.apache.commons.io.FileUtils
		FileUtils.copyFile(source, dest);
	}
	
	/**
	 * java7中的方法
	 * @param source
	 * @param dest
	 */
	private static void copyFileUsingJava7Files(File source, File dest) {
		//java7中可以使用Files类的copy()方法
		//Files.copy(source.toPath(), dest.toPath());
	}

}

分享到:
评论

相关推荐

    java复制文件的4种方式

    ### Java复制文件的四种方式详解 #### 概述 在Java开发过程中,文件操作是一项基本且重要的任务。其中,文件复制是经常需要用到的功能之一。尽管Java标准库并未直接提供一个简单的方法来复制文件,但开发者可以...

    java复制拷贝文本文件的四种方法

    用java复制拷贝文本文件的不同方法和比较; 字节流,字符流等等。

    java文件复制,实现文件的复制

    当需要复制一个完整的文件夹时,除了复制文件之外,还需要考虑文件夹的创建和递归复制。下面是一段示例代码: ```java private static void copyFolder(String oldPath, String newPath) { try { (new File...

    java复制文件代码

    根据提供的文件标题、描述、标签以及部分内容,我们可以总结出与“Java复制文件代码”相关的重要知识点。虽然提供的代码片段存在一些未完成的部分和注释掉的代码,但是我们仍然可以从中提取有价值的信息,并且深入...

    java复制文件方法

    java复制文件方法,关于文件的操作,很全。

    java文件夹及文件复制

    在Java编程语言中,文件和文件夹的复制是一项常见的任务,尤其在系统迁移...以上就是关于Java中使用递归复制文件和文件夹的核心知识点。通过理解这些概念和实践,你将能够有效地在Java程序中处理文件和目录的复制任务。

    Java文件夹复制(远程复制(网络传输),用于远程备份文件)

    Java文件夹复制功能是通过编程实现的,主要涉及到文件操作和网络通信两个核心知识点。这里有两个关键类:`FileSelection` 和 `BackupClient`。`FileSelection` 类用于选择和组织待复制的文件,而 `BackupClient` 类...

    java复制文件及复制文件夹

    在Java编程中,复制文件和复制文件夹是常见的操作,特别是在处理数据迁移、备份或程序部署时。下面我们将深入探讨如何使用Java实现这些功能,并提供相关的代码示例。 首先,让我们看看如何复制单个文件。Java标准库...

    java 复制文件 io流操作

    在这个主题中,我们将深入探讨如何使用Java的IO流进行文件复制,重点讨论四个关键函数:`Reader`, `Writer`, `InputStream`, 和 `OutputStream`。 1. **Reader与Writer**: - **Reader** 是字符输入流的抽象类,...

    java简单的文件复制粘贴

    在本节中,我们将介绍 Java 文件复制粘贴的实现方法。 文件复制粘贴的重要性 文件复制粘贴是计算机操作系统中的一种基本操作。它可以将文件从一个位置复制到另一个位置,实现文件的备份、传输和共享。文件复制粘贴...

    java 复制指定目录下的文件

    以上就是使用Java复制指定目录下文件的基本方法,无论是使用传统的`java.io`还是现代化的`java.nio.file`,都可以有效地完成这项任务。在实际应用中,还需要注意错误处理和异常捕获,确保程序的健壮性。例如,确保...

    Java文件操作一例:Copy 复制文件.rar

    Java文件操作一例:Copy 复制文件,虽然是复制文件,不过通过本源码你可以学习很多相关的Java基础技巧,比如Java对文件的事件处理、取得目录内容的事件处理、如何弹出文件选择器、如何得到选择文件的绝对路径、如何...

    高效率文件复制java版

    本资源主要讲解了高效率文件复制的java实现方法,包含了两种不同的实现方式,分别使用java io流和FileChannel来实现文件复制操作。 知识点1:Java IO流文件复制 在第一个实现方法中,我们使用了Java IO流来实现...

    java文件复制功能

    java文件复制,使用java语言开发的,效果如windows 的复制和粘贴效果。

    Java 单线程复制文件和多线程复制文件的比较

    Java 单线程复制文件和使用RandomAccessFile多线程复制文件的比较,对应博客地址为http://blog.csdn.net/zmichealchow/article/details/38687431

    java_文件复制(带有编码类型)

    "Java 文件复制(带有编码类型)" 在 Java 中,文件复制是非常常见的操作。今天,我们将讨论如何使用 Java 将文件从一个位置复制到另一个位置,并且带有编码类型。 标题:Java 文件复制(带有编码类型) 描述:...

    文件复制(java代码实现)

    在Java编程语言中,文件复制是一项常见的任务,用于在不同位置之间移动或备份数据。本文将详细介绍如何在Java中实现文件复制,同时考虑到输入输出异常处理,并在DOS控制台环境中运行程序。 首先,我们需要创建一个...

    Java IO文件操作类与复制文件实例.rar

    Java IO文件操作类与复制文件实例,有关文本编辑、FileWriter文件写入、FileReade文件读娶DataStream文件数据流、BufferedReader文件暂存器、FileViewer文件浏览器、复制文件Copy等方面的操作要领,仅供学习参考。

    java文件复制(全)

    本文将深入探讨如何使用Java实现文件的复制,包括单个文件的复制和整个文件夹及其子文件的复制。 首先,我们来看一个简单的Java程序,用于复制单个文件。这个例子中,我们将使用`java.io`包中的`...

    java 连接 FTP 文件操作(上传,下载,删除,复制

    在IT行业中,Java是一种广泛应用的编程语言,尤其在文件操作和网络通信方面有着广泛的应用。本文将详细讨论如何使用Java连接FTP(File Transfer Protocol)服务器,进行文件的上传、下载、删除以及复制等操作。 ...

Global site tag (gtag.js) - Google Analytics