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)
另见