Java使用ByteBuffer读取大文件
Posted swbzmx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java使用ByteBuffer读取大文件相关的知识,希望对你有一定的参考价值。
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(); } }
以上是关于Java使用ByteBuffer读取大文件的主要内容,如果未能解决你的问题,请参考以下文章
Java--Stream,NIO ByteBuffer,NIO MappedByteBuffer性能对比
Java难点攻克「大文件处理系列」让我们一起去挑战一下如何读取一个较大或者超大的数据文件