尽管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复制文件的四种方式详解 #### 概述 在Java开发过程中,文件操作是一项基本且重要的任务。其中,文件复制是经常需要用到的功能之一。尽管Java标准库并未直接提供一个简单的方法来复制文件,但开发者可以...
当需要复制一个完整的文件夹时,除了复制文件之外,还需要考虑文件夹的创建和递归复制。下面是一段示例代码: ```java private static void copyFolder(String oldPath, String newPath) { try { (new File...
在Java编程语言中,文件和文件夹的复制是一项常见的任务,尤其在系统迁移...以上就是关于Java中使用递归复制文件和文件夹的核心知识点。通过理解这些概念和实践,你将能够有效地在Java程序中处理文件和目录的复制任务。
根据提供的文件标题、描述、标签以及部分内容,我们可以总结出与“Java复制文件代码”相关的重要知识点。虽然提供的代码片段存在一些未完成的部分和注释掉的代码,但是我们仍然可以从中提取有价值的信息,并且深入...
在本节中,我们将介绍 Java 文件复制粘贴的实现方法。 文件复制粘贴的重要性 文件复制粘贴是计算机操作系统中的一种基本操作。它可以将文件从一个位置复制到另一个位置,实现文件的备份、传输和共享。文件复制粘贴...
在Java编程语言中,复制文件和文件夹是一个常见的任务,特别是在处理文件系统操作时。这里我们将深入探讨如何使用Java实现这个功能。 首先,让我们来看一下标题中提到的`copyFile`方法,这是一个用于复制单个文件的...
Java文件夹复制功能是通过编程实现的,主要涉及到文件操作和网络通信两个核心知识点。这里有两个关键类:`FileSelection` 和 `BackupClient`。`FileSelection` 类用于选择和组织待复制的文件,而 `BackupClient` 类...
在IT行业中,Java是一种广泛应用的编程语言,尤其在文件操作和网络通信方面有着广泛的应用。本文将详细讨论如何使用Java连接FTP(File Transfer Protocol)服务器,进行文件的上传、下载、删除以及复制等操作。 ...
用java复制拷贝文本文件的不同方法和比较; 字节流,字符流等等。
Java 中实现复制文件或文件夹 在 Java 中,实现复制文件或文件夹需要使用 File 类和流操作。下面将详细介绍如何实现复制文件或文件夹的步骤和相关知识点。 复制文件 复制文件的算法相对简单,可以使用缓冲流提高...
在Java编程中,复制文件和复制文件夹是常见的操作,特别是在处理数据迁移、备份或程序部署时。下面我们将深入探讨如何使用Java实现这些功能,并提供相关的代码示例。 首先,让我们看看如何复制单个文件。Java标准库...
本资源主要讲解了高效率文件复制的java实现方法,包含了两种不同的实现方式,分别使用java io流和FileChannel来实现文件复制操作。 知识点1:Java IO流文件复制 在第一个实现方法中,我们使用了Java IO流来实现...
java文件复制,使用java语言开发的,效果如windows 的复制和粘贴效果。
在Java编程中,文件复制是一项基础且常见的任务,无论是在日常开发还是系统集成中都扮演着重要角色。本文将深入探讨如何使用Java实现文件的复制,包括单个文件的复制和整个文件夹及其子文件的复制。 首先,我们来看...
在 Java 中,文件复制是非常常见的操作。今天,我们将讨论如何使用 Java 将文件从一个位置复制到另一个位置,并且带有编码类型。 标题:Java 文件复制(带有编码类型) 描述:BufferedWriter BufferedReader 具体...
在Java编程语言中,文件复制是一项常见的任务,用于在不同位置之间移动或备份数据。本文将详细介绍如何在Java中实现文件复制,同时考虑到输入输出异常处理,并在DOS控制台环境中运行程序。 首先,我们需要创建一个...
Java程序“Java程序_复制文件.jar”是一个基于Java平台的实用工具,主要目的是演示如何在Java中实现文件的复制和移动操作。这个程序对于正在学习Java输入/输出(IO)和Swing GUI库的学生来说是一个很好的参考实例。...
在Java编程中,文件复制是一项基础且常见的任务。在标题和描述中提到的"Java文件复制源代码",主要是指如何使用Java语言来实现文件的拷贝操作。这里我们将深入探讨如何通过Java标准库API来完成文件的复制,并且特别...
在Java开发中,Apache POI库是一个非常实用的工具,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel文件(.xlsx和.xls)。本篇将详细讲解如何使用POI库进行Excel的Sheet页复制,包括数据和样式的跨...
在Java编程语言中,文件复制是一项常见的操作,可以用于备份数据、迁移文件或者在程序中处理数据。IO(Input/Output)流是Java提供的一种处理输入输出数据的方式,包括读取和写入文件。本篇文章将详细介绍如何使用...