繁体   English   中英

如何用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个选项都无法读取文件。 我没有看到错误。 处理刚刚停止,网页会弹出一个没有信息的“错误”弹出窗口。

问题似乎是整个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM