繁体   English   中英

使用Groovy读取文件的特定行

[英]Read a Specific Line of a File with Groovy

有人可以帮我逐行读取文件,

我有这段代码 - 但是这段代码会打印所有内容。 我需要逐行显示第5个(或特定的),因此我想要动态访问和打印任何行。 我需要打印文本文件的第5行。

//read from file

myFile = new File("C:\\Documents and Settings\\ABCEDFG\\Desktop\\soapUI\\params.txt")
printFileLine = { log.info "File line: " + it }
myFile.eachLine(0, printFileLine)

请帮助 - 提前感谢您的帮助!

^谢谢

这是邋and和浪费,但你可以做到

log.info "Line 5: " +  myFile.readLines().get(4)

如果你不想在内存中使用它,你可以这样做:

String readLine( File f, int n ) {
  String line = null
  f.withReader { r ->
    while( n-- > 0 && ( ( line = r.readLine() ) != null ) ) ;
  }
  line
}

然后,打印第5行:

File infile = new File("C:\\Documents and Settings\\ABCEDFG\\Desktop\\soapUI\\params.txt")
String line = readLine( infile, 5 )
println line

但是,如果您想以随机顺序访问方式读取多行,这可能会浪费,因为您每次都会从头开始调整文件。 但是,如果由于太大而无法将其加载到内存中,那么您无法做其他事情

你不能以任何优化的方式做到这一点。 这里有2个选项:

  1. 将所有文件加载到内存中并构建行索引。
  2. 每次需要访问N行时,读取从0到(N-1)的所有行。

说明:

换行只是一个角色。 如果不读取所有字符,就无法告诉文件系统神奇地跳过文件到第N行。你需要实际找到第N行换行字符才能知道第N行的起始位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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