博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java读取 500M 以上文件,java读取大文件
阅读量:5481 次
发布时间:2019-06-16

本文共 1674 字,大约阅读时间需要 5 分钟。

java 读取txt,java读取大文件

设置缓存大小BUFFER_SIZE ,Config.tempdatafile是文件地址

来源博客http://yijianfengvip.blog.163.com/blog/static/175273432201191354043148/

package com.yjf.util;
import java.io.File;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
public class Test {
    public static void main(String[] args) throws Exception {
        final int BUFFER_SIZE = 0x300000; // 缓冲区为3M
        File f = new File(Config.tempdatafile);
 //  来源博客http://yijianfengvip.blog.163.com/blog/static/175273432201191354043148/
        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;
                len += new String(dst, 0, length).length();
                System.out.println(new String(dst, 0, length).length()+"-"+(z-1)+"-"+(8-z+1));
            }
        }
        System.out.println(len);
        long end = System.currentTimeMillis();
        System.out.println("读取文件文件花费:" + (end - start) + "毫秒");
    }

}

来源博客http://yijianfengvip.blog.163.com/blog/static/175273432201191354043148/

java读取 500M 以上文件,java读取大文件

转载于:https://www.cnblogs.com/hibernate3-example/archive/2012/02/22/2492304.html

你可能感兴趣的文章
mongoDB(1):windows下安装mongoDB(解压缩版)
查看>>
CentOS修改主机名
查看>>
php 5.3.6中php-fpm 配置
查看>>
XMPP协议分析-原理篇
查看>>
centos7常用操作
查看>>
系统集成资质培训 - 新书发布
查看>>
Ubuntu解决RTNETLINK answers: File exists
查看>>
ES6数组去重的最佳实践:Set结合Array.from() | 拓展运算符结合 Set
查看>>
深入屏幕像素概念
查看>>
awk命令的几个选项注释
查看>>
Windows更改临时文件夹
查看>>
django base (1)
查看>>
iRedMail调整附件大小 & Postfix的bcc(自动转发/邮件备份/监控/归档) 在同一个服务器是有压力...
查看>>
唯识相链由来
查看>>
linux系统的负载与CPU、内存、硬盘、用户数监控shell脚本
查看>>
Percona Toolkit 安装
查看>>
VOD, TVOD, SVOD FVOD的区别(转)
查看>>
元学习法 - XDITE -Xdite 郑伊廷
查看>>
Firewall之iptables篇
查看>>
sed 语法
查看>>