Domanda

Prima di tutto, non sto cercando di scrivere al SDCard. Voglio scrivere alcune informazioni in un file che persiste tra usi della app. Si tratta essenzialmente di un file ai preferiti possesso della particolare utente. Ecco cosa gli sguardi codice come:

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();
        }

Quando si esegue questo codice, otteniamo sempre il "file non esiste." messaggio nelle nostre DDMS log.

Abbiamo anche provato il seguente codice senza alcun risultato:

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();
        }

È questa seconda porzione di codice che risultati nella FileNotFoundException.

Ho letto più tutorial sulla scrittura e la lettura di file su Android e credo seguo loro abbastanza da vicino, quindi io non sono sicuro perché questo codice non funziona correttamente. Apprezzo tutto l'aiuto!

È stato utile?

Soluzione

Non è necessario utilizzare direttamente la classe File. Utilizzare Activity.getCacheDir() per ottenere la cache dir che è specifico per l'applicazione. Quindi utilizzare new File(cachedir, "filename.tmp") per creare il file.

Altri suggerimenti

Preferenze e SqlLite saranno entrambi permetterà di avere dati persistenti, senza la gestione dei propri file.

Per usare le preferenze condivise si afferra dal proprio contesto, quindi si modificano i valori in questo modo

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

Per ottenere una preferenza out

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

Questo è davvero il modo più semplice per fare preferenze di base, molto più facile poi fare un file. Più di stringhe sono supportati, i tipi di dati di base sono disponibili da aggiungere alla classe delle preferenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top