¿Por qué recibo FileNotFoundException cuando creo y trato de escribir en el archivo en el emulador de Android?

StackOverflow https://stackoverflow.com/questions/4424200

Pregunta

En primer lugar, no estoy tratando de escribir a la tarjeta SD. Quiero escribir algunos datos en un archivo que persiste entre los usos de la aplicación. Se trata esencialmente de un archivo de favoritos En espera del usuario en particular. Esto es lo que las miradas de código como:

try {
            File file = new File("favorites.txt");

            if (file.exists()) {
                Log.d(TAG, "File does exist.");
                fis = new FileInputStream(file);
                br = new BufferedReader(new InputStreamReader(fis));
            }
            else {
                Log.d(TAG, "File does not exist.");
                return favDests;
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

Cuando se ejecuta este código, siempre nos dan el "archivo no existe." mensaje en nuestros DDMS de registro.

También hemos probado el código siguiente en vano:

try {
            File file = new File(GoLincoln.FAV_DEST_FILE);

            fis = new FileInputStream(file);
            br = new BufferedReader(new InputStreamReader(fis));

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

Es esta segunda porción de código que da como resultado la FileNotFoundException.

He leído varios tutoriales sobre cómo escribir y leer archivos en Android y creo que estoy siguiendo muy de cerca ellas, así que no estoy seguro de por qué este código no funciona correctamente. Agradezco cualquier ayuda!

¿Fue útil?

Solución

No se debe utilizar la clase File directamente. Utilice Activity.getCacheDir() para obtener el caché dir que es específica para su aplicación. A continuación, utilice new File(cachedir, "filename.tmp") para crear el archivo.

Otros consejos

Preferencias y se SQLLite tanto le permiten tener datos persistentes sin la gestión de sus propios archivos.

Para utilizar las preferencias compartidas lo agarras de su contexto, a continuación, editar los valores al igual que

mySharedPreferences = context.getSharedPreferences("DatabaseNameWhateverYouWant", 0);
mySharedPreferences.getEditor().putString("MyPreferenceName", "Value").commit();

Para obtener una preferencia a cabo

mySharedPreferences.getString("MyPreferenceName", "DefaultValue");

Esta es realmente la forma más sencilla de hacerlo preferencias básicas, mucho más fácil luego hacer un archivo. Más de cuerdas son compatibles, tipos de datos más básicos están disponibles para ser agregado a la clase de preferencias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top