Groovy:从文件中读取一系列行

2024-03-29

我有一个文本文件,其中包含大约 2,000,000 行的大量数据。使用以下代码片段浏览文件很容易,但这不是我需要的;-)

def f = new File("input.txt")
f.eachLine() {
    // Some code here
}

我只需要从文件中读取特定范围的行。有没有办法像这样指定开始行和结束行(伪代码)?我想避免在选择范围之前使用 readLines() 将所有行加载到内存中。

// Read all lines from 4 to 48
def f = new File("input.txt")
def start = 4
def end = 48
f.eachLine(start, end) {
    // Some code here
}

如果 Groovy 无法做到这一点,也欢迎使用任何 Java 解决方案:-)

干杯, 罗伯特


Java解决方案:

BufferedReader r = new BufferedReader(new FileReader(f));
String line;
for ( int ln = 0; (line = r.readLine()) != null && ln <= end; ln++ ) {
    if ( ln >= start ) {
        //Some code here
    }
}

恶心吧?

不幸的是,除非你的行是固定长度的,否则你将无法跳到start高效地执行第 3 行,因为每行可以任意长,因此需要读取所有数据。这并不排除nicer不过解决方案。

Java 8

认为值得更新以展示如何使用 Streams 有效地做到这一点:

int start = 5;
int end = 12;
Path file = Paths.get("/tmp/bigfile.txt");

try (Stream<String> lines = Files.lines(file)) {
    lines.skip(start).limit(end-start).forEach(System.out::println);
}

因为 Streams 是惰性评估的,所以它只会读取直到并包含的行end(加上它选择执行的任何内部缓冲)。

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

Groovy:从文件中读取一系列行 的相关文章

  • 如何替换引号之间出现的任何单词

    我需要能够替换所有出现的单词 and 仅当它出现在单引号之间时 例如 将字符串中的 and 替换为 XXX This and that with you and me and others and not her and him 结果是 T
  • 如何将TabLayout与Recyclerview同步?

    我有一个TabLayout with Recyclerview这样当单击选项卡时Recyclerview滚动到特定位置 我也想要相反的过程 这样当Recyclerview滚动到特定位置 然后该特定选项卡会突出显示 例如 如果有 4 个选项卡
  • 如何从 ArrayList 中删除空白项。不删除索引

    public class ArrayListTest public static void main String args ArrayList al new ArrayList al add al add name al add al a
  • Java中printf左对齐

    当我运行该程序时 阶乘值右对齐 有没有办法让它左对齐 同时保持中间 50 个空格 public class Exercise 5 13 public static void main String args int numbers 1 2
  • 生成固定长度的随机数组[重复]

    这个问题在这里已经有答案了 我只是想更改我的代码 以便每次运行代码时都会生成固定长度 100 个整数的随机数组 而不仅仅是在代码中包含一个预先设置的数组 我对此很陌生 所以只需要正确方向的指导 谢谢 public class Selecti
  • 当线程无法访问所有已用堆时查找 Java 内存泄漏

    我正在研究基于 Java 的大型系统中潜在的内存泄漏 或至少是内存浪费 JVM 运行时的最大堆大小为 5 GB 2 3GB 堆使用量是应用程序的预期基准 可能会有更高的峰值 在我正在调查的过载场景中 堆被填满 使用 Eclipse Memo
  • Java 8 列表到带有总和的 EnumMap

    我有以下课程 public class Mark private Long id private Student student private Integer value 0 private Subject subject public
  • 在word文档的标题中添加图片时出现问题

    我正在Word文档的标题中添加图片 它显示图像的框架并显示 当前无法显示图像 如果我将文本添加到标题 它会显示文本 如果我在文档正文中添加图像 它也会显示图像 获取图像也是如此 它在标题上显示文本 但没有图像 我的支票快用完了 有人可以建议
  • Java中的异常通知

    使用 Tomcat 的 Web 应用程序有什么好的异常通知系统吗 寻找与 exception notification 等价的库 这些库可作为 Rails 的插件使用 看一下http logging apache org log4j 1 2
  • TestNG 与 DataProvider 并行执行

    我有一个从数据提供者接收数据的测试 我希望此测试与数据提供者的不同值并行运行 我尝试了这样的方法 public class IndependentTest Test dataProvider dp1 threadPoolSize 3 inv
  • 跳转到文件行c#

    我如何跳到文件中的某些行 例如 c text txt 中的第 300 行 using var reader new StreamReader c test txt for int i 0 i lt 300 i reader ReadLine
  • 从文件执行db语句

    我在我的应用程序中使用嵌入式 Apache derby 我有一个名为的 SQL 脚本创建的数据库 sql创建数据库中的所有表并用初始数据填充它 例如 SET SCHEMA APP CREATE TABLE study study id bi
  • 谷歌gson LinkedTreeMap类转换为myclass

    我知道这个问题以前已经被问过 由于我对java和android的新手技能 我一个多星期都无法解决这个问题 我和我的一位朋友正在开发一个 Android 项目 其中有一些类似的事情 最奇怪的部分是 只有当我从 Google Play 商店下载
  • 字符串包含相同的字符但仍然不同[重复]

    这个问题在这里已经有答案了 我正在尝试读取一个 txt 文件并使用每个句子作为团队的名称 同时使用该名称查找另一个 txt 文件以获取其内容 所有 txt 文件都位于我的资产文件夹的根目录中 第一个 txt 文件工作正常 我使用assetm
  • Java 中的引用变量里面有什么?

    我们知道对象引用变量保存表示访问对象的方式的位 它不保存对象本身 但保存诸如指针或地址之类的东西 我正在阅读 Head First Java 第 2 版 一书 书中写道 第 3 章第 54 页 在 Java 中我们并不真正知道什么是 在引用
  • 缓冲区溢出(与)缓冲区溢出(与)堆栈溢出[重复]

    这个问题在这里已经有答案了 可能的重复 堆栈溢出和缓冲区溢出有什么区别 https stackoverflow com questions 1120575 what is the difference between a stack ove
  • 优化Gson反序列化

    优化反序列化的最佳方法是什么 我目前正在使用标准 Gson toJson 和 Gson fromJson 方法来序列化和反序列化一些复杂对象 我希望尽可能减少反序列化时间 如果重要的话 我的最复杂的对象包含 43 个变量 如果你想使用 Gs
  • 在 WildFly 10 中添加 jar 作为部署

    有没有办法 我们可以将 jar 部署为库 部署WildFly 10就像我们可以做到的那样weblogic服务器 或者我们可以将 jar 放在服务器的任何文件夹中并将这些依赖项定义为provided 我得到了什么部署方式jars on Wil
  • 如何使用 GWT 2.4 在服务器端动态创建 UI

    我正在尝试使用 Google Web Toolkit v2 4 创建用户界面 由于多种原因 我需要在运行时指定服务器上接口的内容 我的意思不仅仅是按钮需要动态标签等 而是整个 UI 需要在运行时创建 我的大部分 UI 都可以指定为直接的 H
  • Oracle 的商业 Hotspot JVM 相对于 OpenJDK 有哪些性能优势?

    正如这个问题中所描述的 OpenJDK 与 Java HotspotVM https stackoverflow com q 44335605 1593077 Oracle 的商业 Hotspot JVM 本质上是 OpenJDK 加上一些

随机推荐

  • Pandas 的 T 检验

    如果我想计算 Pandas 中两个类别的平均值 我可以这样做 data Category cat2 cat1 cat2 cat1 cat2 cat1 cat2 cat1 cat1 cat1 cat2 values 1 2 3 1 2 3 1
  • 如何覆盖具有多个子项目的 SBT 项目中的子项目中的设置

    我有一个项目 其中子项目作为 git 子模块添加到子目录中 每个独立项目都有自己的build sbt文件 根项目依赖于并聚合这些子项目 如何覆盖设置值 例如organization or version 在那些子项目里面 lazy val
  • mysql使用连接池时为什么需要释放连接?

    我正在尝试实现以下nodejs mysql数据库this https medium com mhagemann create a mysql database middleware with node js 8 and async awai
  • 有没有办法在Python中按第n个分隔符分割字符串?

    例如 如果我有以下字符串 这是一个字符串 我可以将它分割为每个第二个 而不是每个 以便它返回两个值 this is 和 a string 而不是返回四个值吗 这是另一个解决方案 span 2 words this is a string s
  • 使用jquery求div内元素的总和

    我正在对一组用户进行排序 我有 4 个分组 如下所示 显示 2 个 div class groupWrapper div class groupItem div class itemHeader div class first John d
  • 如何在不链接libc.so的情况下访问段寄存器?

    我正在尝试在 Ubuntu 20 10 上使用 NASM 版本 2 15 04 在 64 位程序集中编写一个简单的堆栈金丝雀 执行下面的代码会导致在使用命令进行汇编和链接时出现分段错误nasm felf64 canary asm ld ca
  • Twitter iOS Streaming API:未收到数据

    我正在尝试修改Apple使用Twitter API的示例代码 以便我可以使用流API来过滤推文 我正在尝试实施针对此问题建议的方法 TWRequest 是否适用于 Twitter 流 API https stackoverflow com
  • Twilio:此电话号码无法发送消息

    我现在有一个 Twilio 测试帐户 我获得了一个比利时电话号码 并验证了我自己的手机号码 我正在尝试从分配的 Twilio 号码向我的手机号码发送简单的 SMS 消息 但这不起作用 仪表板显示 此电话号码无法发送消息 但在消息常见问题解答
  • 如何使用 WSDL

    我正在开发 WSDL 应用程序 但实际上我不明白什么是 wsdl 参数以及我将如何处理返回的 XML 例如 https adwords google com api adwords cm v201309 CampaignService ws
  • 如何防止响应式网页上的水平滚动?

    我正在使用 twitter bootstrap 来使我的应用程序具有响应能力 当我将浏览器窗口的宽度缩小到最小尺寸或在移动设备 例如 iPhone 上查看页面时 用户可以水平滚动 水平滚动量很小 但我想将其全部删除 我相信这是由于我包含的
  • 删除R中一组行中的某些行

    假设我有这个数据集 Id Name Price sales Profit Month Category Mode Supplier 1 A 2 0 0 1 X K John 1 A 2 0 0 2 X K John 1 A 2 5 8 3
  • Swift 中设置和读取 Bool 是原子操作吗?

    正如标题所示 很简单 基本上 在这个例子中 我们是否可以获得无效状态 var myBool false Thread 1 while true if randomEvent myBool true Thread 2 while true i
  • 服务器安全和通过 Rest 访问 OrientDB

    我猜这是一个令人尴尬的初学者问题 无论如何 在 OrientDB 文档的 服务器安全 下 我们发现 虽然 OrientDB Server 可以充当常规 Web 服务器 但不建议您将其直接公开到 Internet 或公共网络 相反 始终将 O
  • 在 Java 32 位和 Java 64 位之间切换

    我刚刚发现 如果我使用 64 位 JDK Apache Tomcat 无法作为 Windows 服务运行 因此我在 Windows 上另外安装了 Java 32 位 问题是当我使用 java version 检查 java 版本时 它仍然显
  • 从 wtforms 和flask-sqlalchemy 中的数据库查询中获取选择

    我正在使用 Flask SQLAlchemy 和 WTForms 开发一个 Web 应用程序 我想得到我的选择选择字段通过我的数据库查询 有更多细节 my query my table query with entities My Enti
  • 日志文件的合适大小(以字节为单位)是多少?

    我正在使用蟒蛇logging http docs python org library logging html simple examples模块旋转文件处理器 http docs python org library logging h
  • BasicHttpBinding 端点配置中的 bindingConfiguration 属性负责什么?

    因此 我正在为 WCF 服务配置端点 我对整个服务几乎没有经验 但一直在使用它们的项目中 我大致了解端点中除一个属性之外的每个属性的作用 绑定配置 这是我的代码的模糊版本 实际信息是专有的
  • vuejs - 计算不能与 props 一起使用

    我正在使用 props 来更新子组件中的网站内容 这基本上是这样工作的
  • 在 Firestore 中安全保存数据

    Firestore 文档shows https firebase google com docs firestore security rules query examples https firebase google com docs
  • Groovy:从文件中读取一系列行

    我有一个文本文件 其中包含大约 2 000 000 行的大量数据 使用以下代码片段浏览文件很容易 但这不是我需要的 def f new File input txt f eachLine Some code here 我只需要从文件中读取特