使用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...
  • u011345136
  • u011345136
  • 2015年05月05日 13:49
  • 6520

java的FileChannel使用方法。

package com.test.nio; import java.io.FileNotFoundException; import java.io.RandomAccessFile; import...
  • jianghuihong2012
  • jianghuihong2012
  • 2014年09月23日 22:06
  • 1932

Java之FileChannel类的理解和使用

Java之FileChannel类的理解和使用文章链接:知识点: FileChannel类及方法理解; 普通输入输出流复制文件; FileChannel复制文件; 新名词记录:{MappedByteB...
  • qq_16628781
  • qq_16628781
  • 2017年04月23日 17:44
  • 3708

【NIO】通过FileChannel读取包含中文内容的文件

直接上代码:package com.xx.nio; import java.io.File; import java.io.FileInputStream; import java.nio.Byte...
  • zhangzeyuaaa
  • zhangzeyuaaa
  • 2017年04月15日 16:53
  • 898

Java NIO ByteBuffer读取文件

FileChannel 和 ByteBuffer 从JDK1.4以后就提供java.nio的包,nio主要提供字节与字符的映射、内存映射文件和文件加锁机制 其中内存映射文件在读取大文件时可能会...
  • u012888365
  • u012888365
  • 2014年03月12日 21:47
  • 10942

ByteBuffer常用方法详解

缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I/O)的数据作临时存储,这部分预留的内存空间就叫做缓冲区: 使用缓冲区有这么两个好处: 1、减少实际的物理读写次数 2、缓冲...
  • u012345283
  • u012345283
  • 2014年08月04日 00:47
  • 13778

java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射

http://langgufu.iteye.com/blog/2107023        java处理大文件,一般用BufferedReader,BufferedInputStre...
  • lihui6636
  • lihui6636
  • 2015年09月29日 16:45
  • 1847

Java文件读写IO/NIO及性能比较总结

干Java这么久,一直在做WEB相关的项目,一些基础类差不多都已经忘记。经常想得捡起,但总是因为一些原因,不能如愿。 其实不是没有时间,只是有些时候疲于总结,今得空,下定决心将丢掉的都给捡起来。 文件...
  • chenleixing
  • chenleixing
  • 2015年03月11日 22:59
  • 12624

java中的FileChannel基本使用

一.获取实例 Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 我们无法直接打开一个FileChannel,需要通过使用一个InputStre...
  • KingBoyWorld
  • KingBoyWorld
  • 2017年05月17日 17:43
  • 1098

通俗编程——白话NIO之Channel

Channel简介在标准的IO当中,都是基于字节流/字符流进行操作的,而在NIO中则是是基于Channel和Buffer进行操作,其中的Channel的虽然模拟了流的概念,实则大不相同。...
  • dd864140130
  • dd864140130
  • 2015年12月16日 14:42
  • 3036
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用NIO的FileChannel和ByteBuffer高效读取文件
举报原因:
原因补充:

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