[英]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个选项都无法读取文件。 我没有看到错误。 处理刚刚停止,网页会弹出一个没有信息的“错误”弹出窗口。
问题似乎是整个HTML文件内容被读取为单行字符串。
有没有办法可以读取这个文件?
我在这里经历了其他几个问题,看看是否有可能的解决方案,但似乎没有任何问题适用于这种情况。
@ user811433,我做了一些测试,使用Apache Commons IO读取大小约为800MB的日志文件,并且执行时没有发生错误。
此方法为文件打开InputStream。 完成迭代器后,应关闭流以释放内部资源。 这可以通过调用LineIterator.close()或LineIterator.closeQuietly(LineIterator)方法来完成。
如果你像Stream一样逐行处理,推荐的使用模式是这样的:
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);
}
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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.