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 org.apache.commons.io.IOUtils.readLines(IOUtils.java:504)
at org.apache.commons.io.IOUtils.readLines(IOUtils.java:457)
at com.sany.client.test.QzjTemp.main(QzjTemp.java:38)
读取方法是:
String path=JOptionPane.showInputDialog(null,"请输入路径:");
File filePATH = new File(path);
List<String> lines = IOUtils.readLines(new FileInputStream(filePATH));
在最后一句 List<String> lines = IOUtils.readLines(new FileInputStream(filePATH)); 出错。
文件是一个***.log文件
7 个解决方案
#1
那就自己用流读呗,这种方法把所有数据一起放内存,当然受不了...
#2
怎么搞呀?不会写呀?
#3
随便本Java基础的书,IO那一章肯定有类似的代码
#4
1. File file = new File(filepath);
2. BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
3. BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024*1024);// 用5G的缓冲读取文本文件
4.
5. String line = "";
6. while((line = reader.readLine()) != null){
7. //TODO: write your business
8. }
也是出错 BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024*1024);//
2. BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
3. BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024*1024);// 用5G的缓冲读取文本文件
4.
5. String line = "";
6. while((line = reader.readLine()) != null){
7. //TODO: write your business
8. }
也是出错 BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024*1024);//
#5
你有多少内存,用5G的缓冲...
#6
呵呵,确实是这个地方设置有问题,我以为文件多大就要设置缓存多大。
#7
参数应该是InputStream类型的
#1
那就自己用流读呗,这种方法把所有数据一起放内存,当然受不了...
#2
怎么搞呀?不会写呀?
#3
随便本Java基础的书,IO那一章肯定有类似的代码
#4
1. File file = new File(filepath);
2. BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
3. BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024*1024);// 用5G的缓冲读取文本文件
4.
5. String line = "";
6. while((line = reader.readLine()) != null){
7. //TODO: write your business
8. }
也是出错 BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024*1024);//
2. BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
3. BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024*1024);// 用5G的缓冲读取文本文件
4.
5. String line = "";
6. while((line = reader.readLine()) != null){
7. //TODO: write your business
8. }
也是出错 BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024*1024);//
#5
你有多少内存,用5G的缓冲...
#6
呵呵,确实是这个地方设置有问题,我以为文件多大就要设置缓存多大。
#7
参数应该是InputStream类型的