我有一个TXT文件,里面的内容为:
A
B
C
D
E我写的代码为import java.util.ArrayList;
import java.util.List;
import java.io.*;public class Read {
public static void main(String[] args){
List<String> list = new ArrayList<String>();
File file=new File("E:/test.txt");   //我把test.txt文件放在E盘下面的
if(file.exists()&&file.isFile()){
try {
BufferedReader br=new BufferedReader(new FileReader(file));
String str = br.readLine();
while(str!=null && str.length()>0){
list.add(str);
}
} catch (IOException e) {
System.out.println("File Error!");
}
}

System.out.println(list);
}
}
运行后报错Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2760)
at java.util.Arrays.copyOf(Arrays.java:2734)
at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
at java.util.ArrayList.add(ArrayList.java:351)
at test.Read.main(Read.java:16)

解决方案 »

  1.   

    while(str!=null && str.length()>0) 判读有问题
      

  2.   

    String str = br.readLine();
    while(str!=null && str.length()>0){
    list.add(str);
    }在list.add(str)后面加一句话
    str = br.readLine();
    你的str没有更新,肯定是死循环了。加上上面的,即OK。
      

  3.   

    BufferedReader br=new BufferedReader(new FileReader(file));
    String str = br.readLine();
    while(str!=null && str.length()>0){
    list.add(str);
    }
    你这样,只要第一次读到内容,然后他就不停的往list里面添加,直到内存溢出。。改成如下:
    string str ="";
    while((str=br.readLine())!=null ){
    list.add(str);
    }
      

  4.   

    不仔细看你代码还真不好找错
    String str = br.readLine();
    while(str!=null && str.length()>0){
    list.add(str);
    str = br.readLine();加入这句。死循环
    }