我有一个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)
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)
while(str!=null && str.length()>0){
list.add(str);
}在list.add(str)后面加一句话
str = br.readLine();
你的str没有更新,肯定是死循环了。加上上面的,即OK。
String str = br.readLine();
while(str!=null && str.length()>0){
list.add(str);
}
你这样,只要第一次读到内容,然后他就不停的往list里面添加,直到内存溢出。。改成如下:
string str ="";
while((str=br.readLine())!=null ){
list.add(str);
}
String str = br.readLine();
while(str!=null && str.length()>0){
list.add(str);
str = br.readLine();加入这句。死循环
}