J'ai recherché sur la manière de récupérer un fichier à Kotlin et j'ai trouvé ce code à Java. Comment écrire ceci dans la langue de Kotlin ...?
Jusqu'à présent, j'ai essayé de le convertir à Kotlin, mais il y a encore des erreurs sur certaines lignes (notées par). S'il vous plaît aidez-moi à résoudre ces erreurs. p>
5 Réponses :
Il suffit de coller votre code Java dans le fichier Android Studio .kt, il vous suggérera de le convertir en Kotlin. Vous obtenez 99% du code de Kotlin. Puis changez quelques éléments manquants. P>
Je sais ... je l'ai déjà fait mais ça n'a pas fonctionné ... C'est j'ai posté ma première question ici ~
Ma solution est la suivante: On dirait que vous avez une boucle infinie là-bas, donc je le change pour chaque boucle pour lire toutes les lignes de l'INTRISTREAM P> P>
Voici ma solution:
fun load(v: View?) {
var fis: FileInputStream? = null
try {
fis = openFileInput(FILE_NAME)
val isr = InputStreamReader(fis)
val br = BufferedReader(isr)
val lines = br.readLines()
val output = lines.joinToString("\n")
mEditText.setText(output)
} catch (e: FileNotFoundException) {
e.printStackTrace()
} catch (e: IOException) {
e.printStackTrace()
} finally {
try {
fis?.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
fun void load(v: View) {
try {
openFileInput(FILE_NAME).use { fis ->
val br = BufferedReader(InputStreamReader(fis))
var text: String? = null
while(true) {
text = br.readLine() ?: break
sb.append(text).append("\n")
}
editText.setText(sb.toString())
}
} catch(e: Exception) {
e.printStackTrace()
}
}
This should be reasonably equivalent. Please note that the if((text = br.readLine() != null) { cannot be written like that directly in Kotlin, however you can replace it with a while(true) { break;.Manual close() is not needed if you are using .use {.
File(FILE_NAME).readLines().fold(StringBuilder()){ builder, next ->
builder.appendln(next)
}.also {
mEditText.setText(it.toString())
}