Saltar al contenido

¿Cómo leer un archivo de texto sin formato en kotlin?

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")
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *