Java BufferedReader 在循环之前检查循环的下一行

2024-03-14

我正在解析 .csv 文件。 对于 cvs 的每一行,我使用解析的值创建一个对象,并将它们放入一个集合中。

在将对象放入地图并循环到下一个对象之前,我需要检查下一个 cvs 行是否与实际对象相同,但特定属性值不同。

为此,我需要检查缓冲区的下一行,但将循环缓冲区保持在同一位置。

例如:

BufferedReader input  = new BufferedReader(new InputStreamReader(new FileInputStream(file),"ISO-8859-1"));
String line = null;

while ((line = input.readLine()) != null) {
    do something

    while ((nextline = input.readLine()) != null) { //now I have to check the next lines
       //I do something with the next lines. and then break.
    }
    do something else and continue the first loop.
}

  1. 您可以使用标记当前位置BufferedReader.mark(int) http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#mark%28int%29。返回到您调用的位置BufferedReader.reset()。参数为mark是“预读限制”;如果你尝试reset()读取超过限制后,您可能会收到 IOException。

  2. 或者你可以使用RandomAccessFile http://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html反而:

    // Get current position
    long pos = raf.getFilePointer();
    // read more lines...
    // Return to old position
    raf.seek(pos);
    
  3. 或者你可以使用PushbackReader http://docs.oracle.com/javase/7/docs/api/java/io/PushBackReader.html这可以让你unread人物。但有一个缺点:PushbackReader不提供readLine method.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java BufferedReader 在循环之前检查循环的下一行 的相关文章

随机推荐

  • 如果文件存在,如何在 MSBuild 中导致错误?

    我们有一个在夜间构建之前运行的流程 如果该过程失败 它将生成一个文本文件 我需要做的就是检查该文件是否存在 如果存在 则会导致 MSBuild 失败 我目前已尝试以下操作
  • 为什么我们不能通过索引访问元组的元素?

    tuple
  • Java泛型方法的继承和覆盖规则

    我有一个具有泛型方法的抽象类 我想通过用特定类型替换泛型参数来覆盖泛型方法 所以在伪代码中我有以下内容 public abstract class GetAndParse public SomeClass var public abstra
  • shinydashboard 一些 Font Awesome 图标不起作用

    使用时shinydashboard我发现有些图标似乎有效 而有些则无效 在下面的示例中 电池充满图标不起作用 而时钟图标则工作正常 我无法弄清楚为什么会发生这种情况 library shiny library shinydashboard
  • 具有服务器端渲染 HTML 片段的骨干模型

    我想开始使用 Backbone js 来更好地构建我的 JavaScript 文件 但是 我不想重做我的应用程序以通过 API 仅输出 JSON 如果我错了 请纠正我 但到目前为止 我的印象是即使没有 JSON API 我仍然可以使用 Ba
  • Play Framework - 如何忽略 Json 序列化的某些字段?

    我有案例课 case class User id Option Long None username String password Option String None 这是该案例类的 json 序列化器 object User impl
  • Rails:如何更改页面标题?

    在不使用插件的情况下为 Rails 应用程序中的页面创建自定义标题的最佳方法是什么 在你看来 做这样的事情 h1 h1 布局文件中包含以下内容
  • Deedle - 按列区分

    前几天我遇到了一个情况 我的某个特定专栏Frame有一些重复的值 我想删除所述列具有重复值的任何行 我设法使用过滤器函数破解了一个解决方案 虽然它对于手头的探索性数据分析来说已经足够好了 但它应该更加痛苦 尽管四处寻找 我还是找不到任何关于
  • 数据表打印复杂表头打印预览

    您好 我正在使用数据表 它很棒 但我在像这样的复杂标头中遇到问题 thead tr td some text td tr tr td some text td tr thead now in showing page its like li
  • MAMP 未在 El Capitan 10.11.1 上启动 Apache 服务器

    因此 我在 Yosemite 上的 Apache 服务器上使用 MAMP 已经有一段时间了 我只需要一台本地主机 因此我使用常规 MAMP 而不是 MAMP Pro 我使用的是 MAMP 3 4 当我单击 启动服务器 按钮时 它不响应单击
  • mongoose .find() 方法返回具有不需要的属性的对象

    所以 我和猫鼬一起工作已经有一段时间了 我发现了一些非常奇怪的事情 如果有人能启发我 那就太好了 问题是 当使用 mongoose 的 find 方法时 我作为响应得到的对象充满了我不知道它来自哪里的属性 我猜测它们是内置属性 但无论如何
  • 有没有办法为 Class::DBI 提供缓存机制?

    我有一组相当复杂的 ORM 模块 它们继承自类别 DBI http search cpan org dist Class DBI 由于数据变化很少 我正在考虑在此之上使用缓存 记忆层来加快速度 我找到了一个模块 类 DBI 可缓存 http
  • Swift 中的飞利浦 HUE SDK

    我对斯威夫特很陌生 我确实有一些使用 Objective C 的经验 尽管距离我真正用它写过任何东西已经有两年了 我正在尝试将 Phillips HUE SDK 与 Swift 一起使用 但遇到了一些问题 我正在尝试将以下 Objectiv
  • form_for 中的 Rails 参数

    我正在制作一个用于更新或保存已保存消息的表单 subject recipients br
  • 寻找行为类似于 InRequestScope 的 Ninject 作用域

    在我的服务层上我注入了一个UnitOfWork以及构造函数中的 2 个存储库 工作单元和存储库有一个实例DbContext我想在他们两个之间分享 我怎样才能用 Ninject 做到这一点 应该考虑哪些范围 I am 不在网络应用程序中所以我
  • Prometheus 警报管理器不发送警报 k8s

    我使用 Prometheus Operator 0 3 4 和警报管理器 0 20 但它不起作用 即我看到警报被触发 在警报选项卡上的 Prometheus UI 上 但我没有收到任何电子邮件警报 通过查看日志 我看到以下内容 知道吗 请参
  • 防止来自 __doPostBack 的完全回发

    我有一个内容页面 其中包含以下内容 UpdatePanel1 包含错误显示 Div包含两个按钮的更新触发器 UpdatePanel2 包含带有 asp button 的进程 1 updatePanel3 包含带有 asp button 的进
  • 监控 Commons DBCP?

    我的 Tomcat 中的一个巨大的 Web 应用程序有时会开始使用过多的 DBCP 连接 从而导致问题 为了进行调查 我想准确地知道每个时间点哪个线程 方法正在持有池的连接 不需要实时 事后分析就可以了 我一直在寻找这样的DBCP监控工具
  • 删除 Django Crispy Form 中的标签

    有谁知道是否有正确的方法来去除酥脆形式的标签 我到目前为止 self fields field label 但这不是一个很好的解决方案 Just do self helper form show labels False 删除所有标签
  • Java BufferedReader 在循环之前检查循环的下一行

    我正在解析 csv 文件 对于 cvs 的每一行 我使用解析的值创建一个对象 并将它们放入一个集合中 在将对象放入地图并循环到下一个对象之前 我需要检查下一个 cvs 行是否与实际对象相同 但特定属性值不同 为此 我需要检查缓冲区的下一行