Java读取大文件
遇到过这样一个情况,需要用java读取一个200M的文本格式文件,而且还需要对文件的内容做解析,进行分词。如果用JVM的默
认设置,利用Scanner类只能读出4M大小内容,于是我就在网上搜索,但是网上没有找到一篇文章是我所需要的内容。于是我只好翻thinking
in
java,发现了一个java的nio里有个MappedByteBuffer类,他的作用可以把一个文件映射到内存中,然后就能像访问数组一样去读取这
个文件。于是我在JDK中查了MappedByteBuffer的详细的用法,然后将其和Scanner类结合一下,便能得到一边读取大文件,一边解析读
取的内容了功能了,具体的代码如下:
public void readResource() {
long fileLength = 0;
final int BUFFER_SIZE = 0x300000;// 3M的缓冲
for(String fileDirectory:this.readResourceDirectory())//得到文件存放路径,我这里使用了一个方法从XML文件中读出文件的
//存放路径,当然也可以用绝对路径来代替这里的fileDriectory
{
File file = new File(fileDirectory);
fileLength = file.length();
try {
MappedByteBuffer inputBuffer =
new RandomAccessFile(file,"r").getChannel().map(FileChannel.MapMode.READ_ONLY, 0, fileLength);//读取大文件
byte[] dst = new byte[BUFFER_SIZE];//每次读出3M的内容
for(int offset=0; offset < fileLength; offset+= BUFFER_SIZE)
{
if(fileLength - offset >= BUFFER_SIZE)
{
for(int i = 0;i < BUFFER_SIZE;i++)
dst
= inputBuffer.get(offset + i);
}
else
{
相关文档:
服务端:
package socket;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket server = new Se ......
在大部分自学的情况下,学习java已快有一年了,最近看了一下jdk中demo下的Clock小程序,在温习了一下Applet的同时,也学到了不少新东西。首先,Applet的基本骨架是由:init(),start(),stop(),destroy(),paint(Graphics g),repaint()和update()这几个方法构成的。
init()用来初始化实例,start()用来起动程序 ......
来源:http://www.blogjava.net/lcs868/archive/2008/12/16/246644.html
用java实现对纯真IP数据库的查询,首先到网上下载QQwry.da文件,读取代码如下: 1.IP记录实体类 package com.guess.tools; /** *
* 一条IP范围记录,不仅包括国家和区域,也包括起始IP和结束IP * *
* @author swal ......
【摘要
JAVA语言是目前Internet上大型的WEB应用程序开发时使用得最热门的编程语言,本文描述了JAVA和JSP技术的特征以及在互联网上的使用情况,介绍这两种技术的重要编程方法和两者之关的联系,并完成一个基于这种技术的网上书店系统。
【关键字JAVA, JavaBeans, Servlet, JSP, 网络编程, 电子商务, 网上书店
Abstract
A ......
很多人这样问,JAVA怎么学呀?应该看什么书呀?
老实说个人来说,书看得不多,开始的时候就看了本 sam's teach yourself Java2 in 24 hours.
所以问起这些问题,真不好说,每个人都不一样.
总的来说,我觉得是多练习是很重要的,
不要看太多书一本就可以了,但练习一定要多做,
学习是一个模仿的过程,
模仿的过程中还要不 ......