android - pie - openFileOutput FileNotFoundException
android pie (4)
¿Ha insertado el permiso correcto? vea http://developer.android.com/reference/android/Manifest.permission.html para referencia. Yo creo que
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
podría ser con quien estás bien
Esta es mi pregunta de noob para la semana. Estoy buscando más especulaciones generales que códigos específicos y tal vez espero que la gente de Android los esté viendo y pueda corregir esto:
La documentación del SDK para Context.openFileOutput dice:
Abra un archivo privado asociado con el paquete de aplicaciones de este Contexto para escribir. Crea el archivo si no existe ya.
OK eso suena bien. Puedo crear un archivo. Excepto que este método también lanza una excepción FileNotFoundException, por lo que aparentemente algo anda mal. ¿Por qué una función que se supone que debe crear un archivo si no se encuentra arrojaría una excepción si no se encuentra el archivo?
Kinda derrota todo eso de "Crea el archivo ...", ¿no es así?
La excepción FileNotFoundException es una excepción lanzada en caso de que esté intentando escribir en un archivo que no existe o que no se puede acceder actualmente. ¿Cuándo más ocurriría esto?
- Quizás olvidó cerrar el archivo e intentó abrir el mismo archivo.
- Quizás intentó crear varios objetos FileOutputStream que apuntan al mismo archivo.
Esto dará lugar a una excepción FileNotFoundException.
De todos modos, puede insertar una throws FileNotFoundException
al final de su declaración de función donde llama a openFileOutput (y a otras funciones que llaman a esta función).
Posiblemente también lanzado si usas MODE_APPEND, que se agrega a un archivo existente y el archivo no existe.
Tengo que disculparme por saltar antes de mirar este. Me asusté un poco mientras leía la documentación. Después de algunas pruebas, descubrí que openFileOutput()
, de hecho, funciona como se anuncia y creará un archivo si no lo encuentra, no solo lanza una excepción FnF como temía. Aparentemente, el lanzamiento de FnF se agregó en caso de que el directorio de aplicación de la Actividad no exista.
Nuevamente, mis disculpas, pero espero que esto pueda ayudar a otros que están confundidos por la documentación.