java 。如何从 BufferedReader 值中删除直到某个点的所有行以避免解析它们?

标签 java bufferedreader

目前我得到了以下内容,它正在从网站上抓取数据。

        try {
        in = ServiceUtils.connect(url);
    } catch (Exception e1) {

        e1.printStackTrace();
    }

这太棒了,然后我可以遍历每一行来找到我想要的内容。

while ((inputLine = in.readLine()) != null){
    //Do a whole bunch of stuff
}

但是,while 循环意味着我将循环浏览页面的整个内容,因为我已经知道我只想在达到如下所示的唯一文本字符串后才查看内容:

<caption>Latest Entries</caption>

如何跳过解析每一行代码?是否可以在解析之前删除该字符串上方的所有内容?

最佳答案

除非您知道它在页面上的位置(它前面有多少个字符),否则没有真正的方法可以做到这一点。如果不知道要跳转到的位置,则无法跳转到某个位置,找到该位置的唯一方法是扫描文件以查找字符串。

您可以做的是确保一次扫描文件一行,只有在找到与搜索字符串匹配的行后才开始任何其他处理。

任何库方法(即indexOf、matches等)都只需在方法内部执行与在方法外部执行的扫描相同的循环。

我只需执行两个 while 循环,第一个循环消耗字符串直到找到匹配项,然后第二个循环进行处理。

while ((inputLine = in.readLine()) != null &&
        inputLine.indexOf("<caption>Latest Entries</caption>")!=-1){
    // Do nothing
} 
while ((inputLine = in.readLine()) != null) {
    // Now do stuff
}

关于 java 。如何从 BufferedReader 值中删除直到某个点的所有行以避免解析它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20745679/

相关文章:

java - 为什么 Jpanels 不工作?

java - 使用 cellrendering 动态地将数据从数据库添加到 jtable 后,无法使用 JTable 进行排序操作

java - Jenkins 管道连接 JPPF 节点

java - java中从URL获取页面内容

Java在另一个方法中调用变量

console - 我们什么时候应该使用控制台类?

java - EditText OnClick 异常

UserDaoImpl 处的 java.lang.ExceptionInInitializerError。<clinit>(UserDaoImpl.java :71)

java - 如何在 Java 中使用 BufferedReader 读取文件结尾(EOF)?

java - 在 Android 中解析 JSON 时出现 OutOfMemoryError