java大文件读,java 读大文件报错

代码:

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.io.Reader;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class readword {

public static String[] Return()

{

String[] mws=null;

List strList = new ArrayList();// 定义一个List存储读取的文本内容

List flags = new ArrayList();// 定义一个List存储keyword出现的行

// System.out.println(“输入分子量前的标识串如> ”);

// String filter=scanner.next();//分子量前的标识串filter如> 

Pattern p = Pattern.compile(“> ”);// 调用Pattern的compile方法编译要匹配的正则

Matcher m;

int j = 0, k = 0;// i=1为输出下一行内容;j为mws表长;k为记录总数

int i=1;

{

Reader re = null;

try {

re = new FileReader(new File(“E:/167m.sdf”));

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

BufferedReader bre = new BufferedReader(re,5*1024*1024);

try {

while (bre.ready()) {

String str = bre.readLine();

strList.add(str);

m = p.matcher(str);

if (m.find())// 查找正则匹配的子串是否存在

{

flags.add(i);// 记录匹配的行

}

i++;

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

for (k = 0; k 

/*System.out.println(“分子” + (k + 1) + “的分子量为”

+ strList.get(flags.get(k)));// 干你想干的事

*/ }

System.out.print(“共有” + k + “条记录”);

mws = new String[k];// 所有的分子量集合

for (j = 0; j 

mws[j] = strList.get(flags.get(j));

}

System.out.println(Arrays.toString(mws));// 输出所有分子量的集合

}

return mws;

}

}

目前读10多m的文件没问题,前几天也可以读100多m的文件,今天不造改哪个地方了连100多的都运行不了。

异常代码:

Exception in thread “main” java.lang.OutOfMemoryError: Java heap space

at java.util.regex.Matcher.(Matcher.java:207)

at java.util.regex.Pattern.matcher(Pattern.java:888)

at readword.Return(readword.java:41)

at HashTable.hash(HashTable.java:36)

at main.main(main.java:32)

heap也设置过了 100m总不能超过内存吧。。。。弄了一天也没弄明白,希望大神们帮忙看眼TUT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值