我用来打开文本文件,随机选择一行,并格式化包含随机选择的行的字符串。然后将字符串打印到控制台,但是由于某种原因,除非随机选择文件的最后一行,否则它将无法工作。
文本文件:
Neversummer
Abelhaven
Phandoril
Tampa
Sanortih
Trell
Zan'tro
Hermi Hermi
Curlthistle Forest
代码:
import java.io.File
fun main() {
var string = File("data/towns.txt")
.readText()
.split("\n")
.shuffled()
.first()
println("$string has printed")
}
选择最后一行时的输出:
Curlthistle Forest has printed
选择其他任何行时的输出:
has printed
正如dyukha在评论部分中所建议的,确实确实是特定于平台的问题。我更喜欢他使用readLines()
提供的解决方案,因为您可以将两个函数调用压缩为一个。
但是,您应该以与平台无关的方式检查行定界符,应该使用内置的System.lineSeparator()
属性(自Java 7起)。
import java.io.File
fun main() {
var string = File("data/towns.txt")
.readText()
.split(System.lineSeparator())
.shuffled()
.first()
println("$string has printed")
}
...
仍然,我还是建议您使用readLines()
,因为它打包了.readText()
和.split(System.lineSeparator())
的功能。