File Groovy中文件的最后一行

File Groovy中文件的最后一行,file,text,groovy,line,File,Text,Groovy,Line,根据我的研究,阅读文本文件的最后一行似乎很复杂。我有一个文本文件,它基本上由行块组成,每个行块由一个空行分隔。我编写了一个Groovy脚本,它可以通过后面的空行识别每个块。我在数段落 我的问题是最后一个块后面没有空行(这些块是由另一个程序生成的,它们不仅仅是我键入的文件) 我想我可以通过在文件末尾添加一个空行,然后运行脚本来解决“读取文件的最后一行”的问题。这是聪明,还是和读最后一行一样难 如果可以,我该怎么做呢?据我所知,你有两种选择 如果可以将整个文件加载到内存中,可以执行以下操作: int

根据我的研究,阅读文本文件的最后一行似乎很复杂。我有一个文本文件,它基本上由行块组成,每个行块由一个空行分隔。我编写了一个Groovy脚本,它可以通过后面的空行识别每个块。我在数段落

我的问题是最后一个块后面没有空行(这些块是由另一个程序生成的,它们不仅仅是我键入的文件)

我想我可以通过在文件末尾添加一个空行,然后运行脚本来解决“读取文件的最后一行”的问题。这是聪明,还是和读最后一行一样难


如果可以,我该怎么做呢?

据我所知,你有两种选择

如果可以将整个文件加载到内存中,可以执行以下操作:

int countBlocksInMem( File f ) {
  f.readLines().with { lines ->
    int size = lines.grep { it == '' }.size()
    if( lines[ -1 ] != '' ) size++
    size
  }
}
如果它太大而无法加载到内存中,您可以执行以下操作:

int countBlocks( File f ) {
  String lastLine
  int size = 0
  f.eachLine { line ->
    lastLine = line
    if( !line ) size++
  }
  if( lastLine ) size++
  size
}
这两种方法基本上都是将空行数相加,如果文件中的最后一行不是空的,则将计数增加1

问题完全更改后编辑 要将空行附加到文件,只需执行以下操作:

new File( 'file.txt' ) << '\n'

当然,如果您有多个东西同时写入同一个文件,这只会产生一个混乱

据我所知,您有两种选择

如果可以将整个文件加载到内存中,可以执行以下操作:

int countBlocksInMem( File f ) {
  f.readLines().with { lines ->
    int size = lines.grep { it == '' }.size()
    if( lines[ -1 ] != '' ) size++
    size
  }
}
如果它太大而无法加载到内存中,您可以执行以下操作:

int countBlocks( File f ) {
  String lastLine
  int size = 0
  f.eachLine { line ->
    lastLine = line
    if( !line ) size++
  }
  if( lastLine ) size++
  size
}
这两种方法基本上都是将空行数相加,如果文件中的最后一行不是空的,则将计数增加1

问题完全更改后编辑 要将空行附加到文件,只需执行以下操作:

new File( 'file.txt' ) << '\n'

当然,如果您有多个东西同时写入同一个文件,这只会产生一团混乱

这是google上首次成功写入groovy文件的最后一行对于那些寻找快速简便的方法获取最后一行的人来说

    new(File("/home/user/somefile.txt").eachLine{
        if(it != null){
            lastLine = it
        }
    }

.eachLine迭代文本文件的每一行,lastLine设置为it变量,直到它为null。非常简单

这是groovy文件最后一行在google上的首次成功对于那些寻找快速简便的方法获取最后一行的人来说

    new(File("/home/user/somefile.txt").eachLine{
        if(it != null){
            lastLine = it
        }
    }

.eachLine迭代文本文件的每一行,lastLine设置为it变量,直到它为null。非常简单

回到原来的问题。。你不能等待答案提交,然后完全改变问题…对不起,我不是有意改变问题的。我也在问同样的问题,只是用更少的语言。我想在文本文件的末尾附加一个空行,以便脚本识别文件中的最后一个块。请不要修复脚本,以便它可以处理没有尾随的文件
\n
?我把这个添加到了我答案的底部,顺便说一句…回到原来的问题。。你不能等待答案提交,然后完全改变问题…对不起,我不是有意改变问题的。我也在问同样的问题,只是用更少的语言。我想在文本文件的末尾附加一个空行,以便脚本识别文件中的最后一个块。请不要修复脚本,以便它可以处理没有尾随的文件
\n
?我把这个添加到了我的答案的底部,顺便说一句…谢谢你,蒂姆。如果我想在文件末尾添加一个空格,该怎么办?@blaughli在
之后执行代码要在文件中添加一个空白行,您只需执行:
不工作?@blaughli无需担心,很乐意帮助:-)谢谢您的帮助。如果我想在文件末尾添加一个空白行,该怎么办?@blaughli在
之后执行代码要在文件中添加一个空白行,您只需执行:
不工作?@blaughli无需担心,很乐意帮助:-)