`
XiaoHuiYuGenius
  • 浏览: 2638 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java中复制文件的三种方法

    博客分类:
  • Java
阅读更多
   尽管Java提供了java.io.File类来处理Java中文件操作,但是,在Java 7 之前,JDK并没有提供与文件复制相关的方法,而当项目中涉及到与文件相关的操作时,文件复制往往是不可或缺的。下面是几种常见的文件复制方法的。

具体可参考国外哥们写的文章
http://examples.javacodegeeks.com/core-java/io/file/4-ways-to-copy-file-in-java/

1、利用FileStreams复制文件
   这是大概是一种比较经典、使用最为广泛的的复制文件的方法了。只要利用FileInputStream从一个文件中读取一定的的字节数,再利用FileOutputStream写入另外一个文件就可以了。
private static void copyFileUsingFileStreams(File source, File dest)
		throws IOException {
	InputStream input = null;
	OutputStream output = null;
	try {
		input = new FileInputStream(source);
		output = new FileOutputStream(dest);
		byte[] buf = new byte[1024];
		int bytesRead;
		while ((bytesRead = input.read(buf)) > 0) {
			output.write(buf, 0, bytesRead);
		}
	} finally {
		input.close();
		output.close();
	}
}

这种方法的弊端在于,当要复制大型文件时,因为要不断的进行读写操作,在效率方面,还是不那么好。

2、 利用Java 7 的新特性:Files.copy
    从JDK 1.7 开始,与文件复制有关的工作,终于不用像上面那样做了,Oracle公司终于将这个方法给封装了起来,但是本质上和上面的方法还是一样的。
private static void copyFileUsingJava7Files(File source, File dest)
		throws IOException {
	Files.copy(source.toPath(), dest.toPath());
}

好奇心驱使,看了下源代码,发现这个方法的最终实现和我们上面的是一样的,有点区别的就是封装的copy方法缓存设置的大了一些,为8192,另外,这种方法是极力推荐的,因为它比其他两种方法效率都高;
private static long copy(InputStream source, OutputStream sink)
        throws IOException
    {
        long nread = 0L;
        byte[] buf = new byte[BUFFER_SIZE];
        int n;
        while ((n = source.read(buf)) > 0) {
            sink.write(buf, 0, n);
            nread += n;
        }
        return nread;
    }


3、利用java.nio.channels.FileChannel类进行文件复制
   这种方法一般被认为效率是比较高的,但是我查看了下源代码,发现竟然没看懂。幸运的是,该方法使用起来还是相当的简单方便。
private static void copyFileUsingFileChannels(File source, File dest)
		throws IOException {
	FileChannel inputChannel = null;
	FileChannel outputChannel = null;
	try {
		inputChannel = new FileInputStream(source).getChannel();
		outputChannel = new FileOutputStream(dest).getChannel();
		outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
	} finally {
		inputChannel.close();
		outputChannel.close();
	}
}
分享到:
评论

相关推荐

    java复制文件的4种方式

    java复制文件的4种方式 java复制文件的4种方式 java复制文件的4种方式

    java文件夹及文件复制

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

    java复制文件代码

    java复制文件代码java复制文件代码java复制文件代码

    java简单的文件复制粘贴

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

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

    利用java实现文件的复制整个文件夹内容,实现文件的复制

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

    Java文件夹复制(远程复制(网络传输),用于远程备份文件)(支持文件夹,嵌套子文件夹) import java.io.*; import java.util.*; public class FileSelection { private File rootDirectory;//根目录 private ...

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

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

    Java中实现复制文件或文件夹

    Java 中实现复制文件或文件夹 在 Java 中,实现复制文件或文件夹需要使用 File 类和流操作。下面将详细介绍如何实现复制文件或文件夹的步骤和相关知识点。 复制文件 复制文件的算法相对简单,可以使用缓冲流提高...

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

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

    java复制文件及复制文件夹

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

    高效率文件复制java版

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

    Java poi复制execl的sheet页,跨文件操作,数据和样式全部复制,工具类

    在Java开发中,Apache POI库是一个非常实用的工具,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel文件(.xlsx和.xls)。本篇将详细讲解如何使用POI库进行Excel的Sheet页复制,包括数据和样式的跨...

    java文件复制功能

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

    java文件复制(全)

    在Java编程中,文件复制是一项基础且常见的任务,无论是在日常开发还是系统集成中都扮演着重要角色。本文将深入探讨如何使用Java实现文件的复制,包括单个文件的复制和整个文件夹及其子文件的复制。 首先,我们来看...

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

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

    文件复制(java代码实现)

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

    Java程序_复制文件.jar

    Java程序“Java程序_复制文件.jar”是一个基于Java平台的实用工具,主要目的是演示如何在Java中实现文件的复制和移动操作。这个程序对于正在学习Java输入/输出(IO)和Swing GUI库的学生来说是一个很好的参考实例。...

    Java文件的复制源代码

    在Java编程中,文件复制是一项基础且常见的任务。在标题和描述中提到的"Java文件复制源代码",主要是指如何使用Java语言来实现文件的拷贝操作。这里我们将深入探讨如何通过Java标准库API来完成文件的复制,并且特别...

    java 使用IO流实现文件的复制

    在Java编程语言中,文件复制是一项常见的操作,可以用于备份数据、迁移文件或者在程序中处理数据。IO(Input/Output)流是Java提供的一种处理输入输出数据的方式,包括读取和写入文件。本篇文章将详细介绍如何使用...

    java 解析 tar gz文件 两种方法

    总结,Java中解析tar.gz文件可以借助第三方库如Apache Commons Compress,也可以使用Java内置API结合自定义逻辑。在大多数情况下,推荐使用成熟的库,因为它们经过了充分的测试,提供了更稳定的性能和丰富的功能。...

Global site tag (gtag.js) - Google Analytics