如何读取 Java 中的巨大 HTML 文件?
How to read a huge HTML file in Java?
我有一个要求,必须在我的应用程序的前端读取和显示一个巨大的 HTML 文件。 HTML 文件大小约为 25MB。
尝试了几个选项,例如:
Option 1:
try (Scanner scnr = new Scanner(file);) {
while (scnr.hasNextLine()) {
String line= scnr.nextLine();
}
}
Option 2:
FileUtils.readFileToString(file, "UTF-8");
Option 3:
IOUtils.toString(new FileInputStream(new File(file)), "UTF-8")
以上3个选项均无法读取文件。我没有看到错误。处理刚刚停止,网页抛出一个没有信息的 "error" 弹出窗口。
问题似乎是整个 HTML 文件内容被读取为一行字符串。
有什么方法可以读取这个文件吗?
我在这里回答了其他几个问题,看看是否有可能的解决方案,但似乎对这种情况没有任何效果。
try {
File f=new File("test.html");
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
String content=null;
while((content=reader.readLine())!=null)
{
System.out.println(content);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
@user811433,我用 Apache Commons IO 做了一些测试,读取了一个大小约为 800MB 的日志文件,在执行过程中没有发生错误。
This method opens an InputStream for the file. When you have finished
with the iterator you should close the stream to free internal
resources. This can be done by calling the LineIterator.close() or
LineIterator.closeQuietly(LineIterator) method.
如果你像流一样逐行处理,推荐的使用模式是这样的:
File file = new File("C:\Users\lucas\Desktop\file-with-800MB.log");
LineIterator it = FileUtils.lineIterator(file, "UTF-8");
try {
while (it.hasNext()) {
String line = it.nextLine();
// do something with line, here just sysout...
System.out.println( line );
}
} finally {
LineIterator.closeQuietly(it);
}
一些额外的参考,here and here
我有一个要求,必须在我的应用程序的前端读取和显示一个巨大的 HTML 文件。 HTML 文件大小约为 25MB。 尝试了几个选项,例如:
Option 1:
try (Scanner scnr = new Scanner(file);) {
while (scnr.hasNextLine()) {
String line= scnr.nextLine();
}
}
Option 2:
FileUtils.readFileToString(file, "UTF-8");
Option 3:
IOUtils.toString(new FileInputStream(new File(file)), "UTF-8")
以上3个选项均无法读取文件。我没有看到错误。处理刚刚停止,网页抛出一个没有信息的 "error" 弹出窗口。
问题似乎是整个 HTML 文件内容被读取为一行字符串。
有什么方法可以读取这个文件吗?
我在这里回答了其他几个问题,看看是否有可能的解决方案,但似乎对这种情况没有任何效果。
try {
File f=new File("test.html");
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
String content=null;
while((content=reader.readLine())!=null)
{
System.out.println(content);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
@user811433,我用 Apache Commons IO 做了一些测试,读取了一个大小约为 800MB 的日志文件,在执行过程中没有发生错误。
This method opens an InputStream for the file. When you have finished with the iterator you should close the stream to free internal resources. This can be done by calling the LineIterator.close() or LineIterator.closeQuietly(LineIterator) method.
如果你像流一样逐行处理,推荐的使用模式是这样的:
File file = new File("C:\Users\lucas\Desktop\file-with-800MB.log");
LineIterator it = FileUtils.lineIterator(file, "UTF-8");
try {
while (it.hasNext()) {
String line = it.nextLine();
// do something with line, here just sysout...
System.out.println( line );
}
} finally {
LineIterator.closeQuietly(it);
}
一些额外的参考,here and here