Solución:
1. Uso de BufferedReader
import java.io.File
import java.io.BufferedReader
fun main(args: Array<String>) {
val bufferedReader: BufferedReader = File("example.txt").bufferedReader()
val inputString = bufferedReader.use { it.readText() }
println(inputString)
}
2. Usando InputStream
Leer por línea
import java.io.File
import java.io.InputStream
fun main(args: Array<String>) {
val inputStream: InputStream = File("example.txt").inputStream()
val lineList = mutableListOf<String>()
inputStream.bufferedReader().forEachLine { lineList.add(it) }
lineList.forEach{println("> " + it)}
}
Leer todas las líneas
import java.io.File
import java.io.InputStream
fun main(args: Array<String>) {
val inputStream: InputStream = File("example.txt").inputStream()
val inputString = inputStream.bufferedReader().use { it.readText() }
println(inputString)
}
3. Utilice Archivo directamente
import java.io.File
import java.io.BufferedReader
fun main(args: Array<String>) {
val lineList = mutableListOf<String>()
File("example.txt").useLines { lines -> lines.forEach { lineList.add(it) }}
lineList.forEach { println("> " + it) }
}
Las respuestas anteriores aquí están todas basadas en Kotlin Java. Aquí hay una forma nativa de Kotlin para leer archivos de texto:
val bufferLength = 64 * 1024
val buffer = allocArray<ByteVar>(bufferLength)
for (i in 1..count) {
val nextLine = fgets(buffer, bufferLength, file)?.toKString()
if (nextLine == null || nextLine.isEmpty()) break
val records = parseLine(nextLine, ',')
val key = records[column]
val current = keyValue[key] ?: 0
keyValue[key] = current + 1
}
fun parseLine(line: String, separator: Char) : List<String> {
val result = mutableListOf<String>()
val builder = StringBuilder()
var quotes = 0
for (ch in line) {
when {
ch == '"' -> {
quotes++
builder.append(ch)
}
(ch == 'n') || (ch == 'r') -> {}
(ch == separator) && (quotes % 2 == 0) -> {
result.add(builder.toString())
builder.setLength(0)
}
else -> builder.append(ch)
}
}
return result
}
Ver: https://github.com/JetBrains/kotlin-native/blob/master/samples/csvparser/src/csvParserMain/kotlin/CsvParser.kt
Para leer un archivo de texto, primero debe crearse. En Android Studio, crearía el archivo de texto así:
1) Seleccione “Proyecto” en la parte superior de la barra de herramientas vertical para abrir la “ventana de herramientas” del proyecto 2) En el menú desplegable en la parte superior de la “ventana de herramientas”, seleccione “Android” 3) Haga clic con el botón derecho en ” App “y seleccione” Nuevo “, luego ->” Carpeta “(el que tiene el ícono verde de Android al lado) luego ->” Carpeta de activos “4) Haga clic con el botón derecho en la carpeta” activos “después de que aparezca en la ventana de herramientas “5) Seleccione” Nuevo “->” Archivo “6) Nombre el archivo e incluya la extensión” .txt “si es un archivo de texto, o” .html “si es para WebView 7) Edite el archivo o corte y pegar texto en él. El archivo ahora se mostrará debajo de los archivos “Proyecto” en la “ventana de herramientas” y podrá hacer doble clic en él para editarlo en cualquier momento.
PARA ACCEDER A ESTE ARCHIVO, use el prefijo “application.assets”. seguido de someFunction (fileName). Por ejemplo (en Kotlin):
val fileName = "townNames.txt"
val inputString = application.assets.open(fileName).bufferedReader().use { it.readText() }
val townList: List<String> = inputString.split("n")