Si hallas algún fallo con tu código o proyecto, recuerda probar siempre en un ambiente de testing antes subir el código al proyecto final.
Solución:
Debe usar un directorio de almacenamiento interno o externo para su archivo.
Interno:
val path = context.getFilesDir()
Externo:
val path = context.getExternalFilesDir(null)
Si desea utilizar almacenamiento externo, deberá agregar un permiso al manifiesto:
Crea tu directorio:
val letDirectory = File(path, "LET")
letDirectory.mkdirs()
Luego crea tu archivo:
val file = File(letDirectory, "Records.txt")
Entonces puedes escribirle:
FileOutputStream(file).use
it.write("record goes here".getBytes())
o solo
file.appendText("record goes here")
Y leer:
val inputAsString = FileInputStream(file).bufferedReader().use it.readText()
Kotlin ha simplificado bastante la lectura/escritura de archivos.
Para leer/escribir a interno almacenamiento:
context.openFileOutput(filename, Context.MODE_PRIVATE).use
it.write(message.toByteArray())
.
.
.
val file = File(context.filesDir, "myfile.txt")
val contents = file.readText() // Read file
Para leer/escribir a externo almacenamiento:
val file = File(Environment.getExternalStorageDirectory()+"/path/to/myfile.txt")
file.writeText("This will be written to the file!")
.
.
.
val contents = file.readText() // Read file
Solo quiero agregar a la respuesta de TpoM6oH. Cuando trabaje con Archivos, es posible que no tenga garantizado el 100 % de éxito en las operaciones de archivo que pretende. Por lo tanto, es una mejor práctica tratar de detectar excepciones como filenotfoundexception, etc. y tener el debido cuidado con el flujo de control del programa.
Para crear un archivo en el almacenamiento externo en Android, puede obtener la ubicación usando
Environment.getExternalStorageDirectory()
y verifique si la ubicación existe. Si no es así, cree uno y continúe creando y escribiendo su archivo usando Kotlin.
val sd_main = File(Environment.getExternalStorageDirectory()+"/yourlocation")
var success = true
if (!sd_main.exists())
success = sd_main.mkdir()
if (success)
val sd = File("filename.txt")
if (!sd.exists())
success = sd.mkdir()
if (success)
// directory exists or already created
val dest = File(sd, file_name)
try
// response is the data written to file
PrintWriter(dest).use out -> out.println(response)
catch (e: Exception)
// handle the exception
else
// directory creation is not successful
Espero que esto ayude.
Si te gustó nuestro trabajo, tienes el poder dejar una noticia acerca de qué te ha parecido este artículo.