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
{
相关文档:
一些企业在招聘程序员的时候,总会特意提出一个要求,即要求具有良好的编码规范。确实现在程序开发人员已经不在是单枪匹马的单干,而是讲究团体作战。此时就要求团队内的乘员都可能够恪守代码的编写规范,这对于乘员之间共享代码、排错等作业都具有非常现实的意义。这在Java语言中当然也不例外。笔者借这次机会,就跟大家分 ......
Java的优点有: 跨平台性很强的,一次编译到处运行,一边编译一边执行, 不受病毒的干扰。但是美中不足,运行速度比C,C++ 等语言慢, 访问硬件底层比不上C++,C,一些应用需求却需要执行纯 Java 程序无法完成的一些任务。为此SUN公司为了突破JAVA的瓶颈, 就引入了JNI 的作用, JNI就是能够兼容C,扬长避短, 快速的访问硬 ......
项目中你不得不知的11个Java第三方类库
责任编辑:覃里作者:Javaeye 2009-11-02 来源:IT168网站
文本Tag: IT业界 Java Java开发工具
【IT168 评论】Java第三方library ecosystem是一个很广阔的范畴。不久前有人撰文:每个项目中,你必须知道的11个Java第三方类库。
单元测试
......
1.File类为管理文件和目录提供了方法,其对象表示一个文件或者目录。它提供了若干方法对文件或文件夹进行操作。其中的list()方法和listFiles()方法可以起到定位特定文件的作用。
2.Object类,是所有Java类的祖先,若一个类声明时没有包含extends关键字,则其直接继承于Objetc类。其中有许多重要方法:
equals(),not ......
1.基本概念的理解
绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。
相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在
Servl ......