使用NIO的FileChannel和ByteBuffer高效读取文件

转载 2012年03月30日 09:47:54

http://hi.baidu.com/boywell/blog/item/658d143f730a553770cf6ccd.html

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;


public class ReadWriteCompare
{

public static void main(String[] args) throws IOException
{
FileInputStream fileInputStream = new FileInputStream("f:"+ File.separator +"IBM e-Mentor Program Kickoff Night 1105.pdf");
FileOutputStream fileOutputStream = new FileOutputStream("f:" + File.separator + "test.pdf");
   FileChannel inChannel = fileInputStream.getChannel();
FileChannel outChannel= fileOutputStream.getChannel();

ByteBuffer byteBuffer = ByteBuffer.allocate(1024);

   //Direct Buffer的效率会更高。
//   ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1024);     

   long start = System.currentTimeMillis();
while(true)
{
int eof = inChannel.read(byteBuffer);
if(eof == -1 ) break;
byteBuffer.flip();
    outChannel.write(byteBuffer);
byteBuffer.clear();
}
System.out.println("spending : " + (System.currentTimeMillis()-start));
inChannel.close();
outChannel.close();

}

}


相关文章推荐

利用FileChannel完成文件的读、写、复制

内容:通过NIO中的FileChannel完成文件的读、写、复制。 public class NioFileCopy { private RandomAccessFile aFile = null...

javanio中FileChannel写入文件write,追加文件,以及多文件合并

FileChannel   追加写入文件实现方法如下: File file = new File(filename) ; if(!file.exists()){ ...

使用FileChannel(文件通道)来实现文件快速复制

在Java编程中,复制文件的方法有很多,而且经常要用到。我以前一直是缓冲输入输出流来实现的(绝大多数人都是如此),近来在研究JDK文档时发现,用文件通道(FileChannel)来实现文件复制竟然比用...

NIO边看边记 之 FileChannel(七)

FileChannel不可工作在非阻塞模式,不可以将FileChannel注册到Selector上。1.打开FileChannel不能直接打开,需要通过一个与之关联的FileInputStream、F...

java的FileChannel使用方法。

package com.test.nio; import java.io.FileNotFoundException; import java.io.RandomAccessFile; import...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Java之FileChannel类的理解和使用

Java之FileChannel类的理解和使用文章链接:知识点: FileChannel类及方法理解; 普通输入输出流复制文件; FileChannel复制文件; 新名词记录:{MappedByteB...

java中的File文件读写操作

java中的File文件读写操作

FileChannel的深入理解

FileChannel的深入理解

java IO相关API探索之FileChannel类

昨天看到了FileInputStream类的内部实现,里面除了继承自InputStream类外,还多加了一个FileChannel的方法,通过getChannel()方法获取到文件的通道,今天看一下关...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用NIO的FileChannel和ByteBuffer高效读取文件
举报原因:
原因补充:

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