Kotlin 读第行并在末尾附加一些内容

Kotlin 读第行并在末尾附加一些内容,kotlin,Kotlin,我是科特林的新手。我试图逐行读取文件,并在每个文件的末尾添加一些内容 我的文件在阅读之前: abcd;abcd;abcd; bcda;bcda;bcda; dacb;dacb;dacb; 读取和附加后的我的文件: abcd;abcd;abcd;smth1 bcda;bcda;bcda;smth2 dacb;dacb;dacb;smth3 我有逐行读取文件的代码,但您能告诉我如何将字符串添加到每一行吗 val pathToFile = "abc.txt" val scan = Scanner(

我是科特林的新手。我试图逐行读取文件,并在每个文件的末尾添加一些内容

我的文件在阅读之前:

abcd;abcd;abcd;
bcda;bcda;bcda;
dacb;dacb;dacb;
读取和附加后的我的文件:

abcd;abcd;abcd;smth1
bcda;bcda;bcda;smth2
dacb;dacb;dacb;smth3
我有逐行读取文件的代码,但您能告诉我如何将字符串添加到每一行吗

val pathToFile = "abc.txt"
val scan = Scanner(File(pathToFile))
while (scan.hasNextLine()) {
    val line = scan.nextLine()
    var lista = ArrayList<String>()
    lista = line.split(";") as ArrayList<String>
    println(lista.get(0) + " and " + lista.get(1) + " and " + lista.get(2))
}
val pathToFile=“abc.txt”
val scan=扫描仪(文件(路径文件))
while(scan.hasNextLine()){
val line=scan.nextLine()
var lista=ArrayList()
lista=line.split(“;”)作为ArrayList
println(lista.get(0)+”和“+lista.get(1)+”和“+lista.get(2))
}

除非使用,否则无法读取和写入同一文件。相反,您应该执行以下操作:

  • 从输入文件中读取行
  • 执行所需的修改(附加到行尾,打印行)
  • 将修改后的行写入输出文件
  • 读取/写入所有数据后,关闭两个文件
  • 删除输入文件。将输出文件重命名为输入文件名

除非使用,否则无法读取和写入同一文件。相反,您应该执行以下操作:

  • 从输入文件中读取行
  • 执行所需的修改(附加到行尾,打印行)
  • 将修改后的行写入输出文件
  • 读取/写入所有数据后,关闭两个文件
  • 删除输入文件。将输出文件重命名为输入文件名
    • 有权。下面是一些Kotlin代码来完成这项工作:

      inline fun File.mapLines(crossinline transform: (line: String) -> String) {
          val tempFile = createTempFile(prefix = "transform", suffix = ".txt")
          tempFile.printWriter().use { writer ->
              this.forEachLine { line -> writer.println(transform(line)) }
          }
          check(this.delete() && tempFile.renameTo(this)) { "failed to replace file" }
      }
      
      用法示例:

      val pathToFile = "abc.txt"
      var index = 0
      File(pathToFile).mapLines { line -> "${line}smth${++index}" }
      
      如果您使用的是Java 1.7+,则可以使用
      文件。移动
      而不是
      删除
      /
      重命名为

      Files.move(tempFile.toPath(), this.toPath(), StandardCopyOption.REPLACE_EXISTING)
      
      另请参见。

      有权。下面是一些Kotlin代码来完成这项工作:

      inline fun File.mapLines(crossinline transform: (line: String) -> String) {
          val tempFile = createTempFile(prefix = "transform", suffix = ".txt")
          tempFile.printWriter().use { writer ->
              this.forEachLine { line -> writer.println(transform(line)) }
          }
          check(this.delete() && tempFile.renameTo(this)) { "failed to replace file" }
      }
      
      用法示例:

      val pathToFile = "abc.txt"
      var index = 0
      File(pathToFile).mapLines { line -> "${line}smth${++index}" }
      
      如果您使用的是Java 1.7+,则可以使用
      文件。移动
      而不是
      删除
      /
      重命名为

      Files.move(tempFile.toPath(), this.toPath(), StandardCopyOption.REPLACE_EXISTING)
      
      另见