java文件复制

原创 2015年07月08日 21:35:50

使用普通的按字节读取,再写入另一个文件,速度太慢。Java提供的JavaChannel能显著提升速度(暂时不知道原理)


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

public class FileCopy {
	public static void main(String[] args) {
		String from="e:/Thunder_dl_V7.9.37.4952_setup.1433748298.exe";
		String to="e:/copy/target.exe";
		File fileFrom=new File(from);
		File fileTo=new File(to);
		long start=System.currentTimeMillis();
		//normalCopy(fileFrom,fileTo);
		fastCopy(fileFrom, fileTo);
		long end=System.currentTimeMillis();
		System.out.println("复制文件所用时间是:"+(end-start)+"ms");
	}
	
	public static void normalCopy(File fileFrom,File fileTo){
		int b;
		FileInputStream from=null;
		FileOutputStream to=null;
		try {
			from=new FileInputStream(fileFrom);
			to=new FileOutputStream(fileTo);
			while((b=from.read())!=-1){
				to.write(b);
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("没有找到文件");
			e.printStackTrace();
			System.exit(-1);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println("文件复制错误");
			e.printStackTrace();
			System.exit(-1);
		} finally {
			try {
				from.close();
				to.close();
			} catch(IOException e){
				e.printStackTrace();
			}
		}

	}
	
	public static void fastCopy(File fileFrom,File fileTo){
		FileInputStream from=null;
		FileOutputStream to=null;
		FileChannel in=null;
		FileChannel out=null;
		try {
			from=new FileInputStream(fileFrom);
			to=new FileOutputStream(fileTo);
			in=from.getChannel();//获取通道
			out=to.getChannel();//
			in.transferTo(0, in.size(), out);  //java提供的复制方法
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("没有找到文件");
			e.printStackTrace();
			System.exit(-1);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println("文件复制错误");
			e.printStackTrace();
			System.exit(-1);
		} finally {
			try {			
				from.close();
				in.close();
				to.close();
				out.close();
			} catch(IOException e){
				e.printStackTrace();
			}
		}

	}
}


java实现文件复制功能

简单的文件复制程序,当然只是复制过程中的一部分,仔细分析还有很多功能,比如判断磁盘是否有足够空间,效率等问题,这些问题后面会牵涉到 public void copyFolder(String...
  • j04110414
  • j04110414
  • 2014年01月03日 15:53
  • 2013

Java中的I/O流及利用I/O流实现文件复制功能

Java中的I/O流及利用I/O流实现文件复制功能 一、I/O流的概念        1、 什么是I/O? 硬件层面:I/O(input/output),即输入/输出。每个设备都会有一个专用的I...
  • BlueSky_USC
  • BlueSky_USC
  • 2016年11月25日 18:49
  • 1967

java 通过bufferedReader和bufferedWriter 拷贝文件

/** * @time 2014-8-15 下午05:00:58 * @author new * @function 通过bufferedReader和bufferedWriter 拷贝文件 ...
  • u010113156
  • u010113156
  • 2014年08月15日 19:15
  • 933

java文件复制,重命名

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi...
  • u013499771
  • u013499771
  • 2016年02月20日 16:34
  • 2148

JAVA中的文件复制

众所周知,在Java中,实现文件复制的方式有很多,并且还要考虑到选用字符流还是字节流 如果仅仅只是文本文件的话,我们使用字符流无可厚非,但不一定所有的文件都是文本文件啊 在视频,音频方面,就要用到字节...
  • u012482299
  • u012482299
  • 2015年09月07日 17:11
  • 359

FIle 文件操作,包括文件的复制、删除以及zip和rar格式的解压操作

由于rar压缩算法不公开,所以java api中没有rar的api,做使用rar之前必须使用开源jar包 dependency>     groupId>com.github.junrar...
  • u013262276
  • u013262276
  • 2016年07月11日 18:38
  • 974

使用NIO复制文件

package jp.co.realseed;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io...
  • flyforlove
  • flyforlove
  • 2007年05月15日 16:03
  • 2070

Java文件拷贝的几种实现方案

1.FileInputStream 2.FileChannel 3.IORedirect 4.ApacheCommonIO中的FileUtils.copyFile()方法 5.jdk1.7中的File...
  • u014717036
  • u014717036
  • 2016年08月22日 21:13
  • 750

Java文件复制

Java中实现文件的复制。
  • csulfy
  • csulfy
  • 2016年08月16日 17:28
  • 259

Java中复制文件的两种方式

package IOProj; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import...
  • wangchunlei123
  • wangchunlei123
  • 2014年04月22日 16:17
  • 9319
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java文件复制
举报原因:
原因补充:

(最多只允许输入30个字)