gpt4 book ai didi

java - 想要读取最大为 1MB 的文本文件的完整内容

转载 作者:行者123 更新时间:2023-11-30 09:24:29 25 4
gpt4 key购买 nike

在 JAVA 中,我想读取最大为 1MB 大小的 .log 文件的完整内容,我需要将其存储在 StringBuilder 中

我尝试使用此代码,但出现异常 STACKERRORFLOW。

            String fileName = "C://test//.log";
File testfile = new File(fileName);
int ch;
StringBuilder strcontent = new StringBuilder();
try
{
FileInputStream fis = new FileInputStream(testfile);
while((ch = fis.read()) != -1)
strcontent.append((char)ch);
fis.close();
}
System.out.println(strcontent.toString());

这里面会出现什么问题。

最佳答案

如果你想阅读日志文件我建议你使用java.io.BufferedReader

BufferedReader r = null;
File testfile = new File("C://test//.log");
StringBuilder b = new StringBuilder();
try {
r = new BufferedReader(new FileReader(testfile));
String line = null;
while ((line = r.readLine()) != null) {
b.append(line);
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
r.close()
}
catch (Exception ex) {
ex.printStackTrace();
}
}

Stackoverflow 可能导致 @MadProgrammer 指出。

而且你正在逐个字符地读取更大的文件,我认为这是无效的。你知道 append() 方法会被调用多少次吗?

正如@joan 指出的 -Xmx JVM 选项,我认为这无济于事,因为这与堆大小问题有关,与 stackoverflow 无关。 SO 通常在您进行大型递归时抛出,或者通常在某些东西被多次调用并且变量填满堆栈时抛出。

关于java - 想要读取最大为 1MB 的文本文件的完整内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15679652/

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