java读取大文件

原创 2013年12月02日 17:16:03
import java.io.File;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;

public class FileUtils {
	 public static void main(String[] args) throws Exception {
	        final int BUFFER_SIZE = 0x300000; // 缓冲区为3M
	        File f = new File("c:/backupfile.sql"); 
	        int len = 0;
	        Long start = System.currentTimeMillis();
	        for (int z = 8; z >0; z--) {
	            MappedByteBuffer inputBuffer = new RandomAccessFile(f , "r"  )
	                    .getChannel().map(FileChannel.MapMode.READ_ONLY ,
	                            f.length() * (z-1) / 8, f.length() * 1 / 8) ;
	           
	            byte[] dst = new byte[BUFFER_SIZE];// 每次读出3M的内容
	            for (int offset = 0; offset < inputBuffer.capacity(); offset += BUFFER_SIZE) {
	                if (inputBuffer.capacity() - offset >= BUFFER_SIZE) {
	                    for (int i = 0; i < BUFFER_SIZE; i++)
	                        dst[i] = inputBuffer.get(offset + i);
	                } else {
	                    for (int i = 0; i < inputBuffer.capacity() - offset; i++)
	                        dst[i] = inputBuffer.get(offset + i);
	                }
	                int length = (inputBuffer.capacity() % BUFFER_SIZE == 0) ? BUFFER_SIZE
	                        : inputBuffer.capacity() % BUFFER_SIZE;
	                String line = new String(dst, 0, length , "UTF-8" ) ;  
	                len += length ;
	                System.out.println( length +"-"+(z-1)+"-"+(8-z+1));  
	            }
	        }
	        System.out.println( len ) ; 
	        long end = System.currentTimeMillis();
	        System.out.println("读取文件文件花费:" + (end - start) + "毫秒");
	    }
}

Java读取大文件的处理

  • 2013年05月12日 22:16
  • 32KB
  • 下载

java读取大文件

  • 2013年06月05日 18:00
  • 13KB
  • 下载

Java复制、读取大文件的固定套路

Java复制、读取大文件的固定套路 /** * 测试文件拷贝的方法 * @throws IOException */ @Test public v...

java读取大文件大全

  • 2013年10月09日 01:09
  • 7KB
  • 下载

java大文件读取-乔乐共享

  • 2012年03月25日 21:31
  • 31KB
  • 下载

Java多线程读取大文件

前言   今天是五一假期第一天,按理应该是快乐玩耍的日子,但是作为一个北漂到京师的开发人员,实在难想出去那玩耍。好玩的地方比较远,近处又感觉没意思。于是乎,闲着写篇文章,总结下昨天写的程序吧。  ...
  • jcxch
  • jcxch
  • 2017年03月28日 19:17
  • 474

java按行读取大文件并解析入库

  • 2015年01月30日 14:37
  • 3KB
  • 下载

Java读取大文件的高效率实现

1、概述 本教程将演示如何用Java高效地读取大文件。这篇文章是Baeldung (http://www.baeldung.com/) 上“Java——回归基础”系列教程的一部分。 2、在内存中读...

java 单线程读取大文件10G

思考:如果不考虑多线程,分布式的话,要高效的毒如和写出大文件,主要是解决读文件和写文件的磁盘IO问题,通过批量读取和批量写出来实现。 /* * 该方法实现了批量输入,批量输出。 * 输...

Java高效地读取大文件

1、概述本教程将演示如何用Java高效地读取大文件。这篇文章是Baeldung (http://www.baeldung.com/) 上“Java——回归基础”系列教程的一部分。2、在内存中读取读取文...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java读取大文件
举报原因:
原因补充:

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