gpt4 book ai didi

Java读取大文件java堆空间

转载 作者:行者123 更新时间:2023-12-02 13:29:06 26 4
gpt4 key购买 nike

我写了这段代码:

try(BufferedReader file = new BufferedReader(new FileReader("C:\\Users\\User\\Desktop\\big50m.txt"));){
String line;
StringTokenizer st;

while ((line = file.readLine()) != null){
st = new StringTokenizer(line); // Separation of integers of the file line
while(st.hasMoreTokens())
numbers.add(Integer.parseInt(st.nextToken())); //Converting and adding to the list of numbers
}

}
catch(Exception e){
System.out.println("Can't read the file...");

}

big50m 文件有 50.000.000 个整数,我收到此运行时错误:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3332)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:596)
at java.lang.StringBuffer.append(StringBuffer.java:367)
at java.io.BufferedReader.readLine(BufferedReader.java:370)
at java.io.BufferedReader.readLine(BufferedReader.java:389)
at unsortedfilesapp.UnsortedFilesApp.main(UnsortedFilesApp.java:37)
C:\Users\User\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 5 seconds)

我认为问题出在名为line的字符串变量上。你能告诉我怎么做吗要解决这个问题 ?因为我想要快速阅读,所以我使用 StringTokenizer。

最佳答案

从文件创建一个 BufferedReader 并逐个字符read()。将数字字符放入String,然后Integer.parseInt(),跳过任何非数字字符并继续解析下一个数字,依此类推。

关于Java读取大文件java堆空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43260662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com