2012-08-28 1 views
5

Je souhaite écrire dans un fichier et en lire le contenu. En utilisant la méthode openFileOutput (.., ..), j'obtiens que cette méthode n'est pas définie car c'est une méthode abstraite. Ensuite, je l'ai essayé en passant le contexte en utilisant getBaseContext(); et l'avertissement était éteint mais je n'obtiens pas le résultat en lisant la sortie. J'ai également essayé de passer le contexte en tant que paramètre dans le constructeur mais cela n'a pas non plus aidé. Je veux écrire des méthodes statiques pour ne pas avoir à instancier la classe à chaque fois et la statique n'est pas la raison parce que j'ai essayé sans elle aussi. Le code est un extrait est donné ci-dessous.Ecriture et lecture d'une chaîne vers un stockage interne sous Android

Dois-je spécifier un chemin d'accès, même lorsque j'utilise le stockage interne? Existe-t-il une autorisation requise pour écrire des fichiers sur le stockage interne? (J'ai inclus la permission d'écrire sur le stockage externe)

public static void write (String filename,Context c,String string) throws IOException{ 
    try { 
     FileOutputStream fos = c.openFileOutput(filename, Context.MODE_PRIVATE); 
     fos.write(string.getBytes()); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 


public static String read (String filename,Context c) throws IOException{ 

    StringBuffer buffer = new StringBuffer(); 

    FileInputStream fis = c.openFileInput(filename); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(fis)); 
    if (fis!=null) {        
     while ((Read = reader.readLine()) != null) {  
      buffer.append(Read + "\n"); 
     }    
    }  
    fis.close(); 
    return Read; 
} 
+2

Vous voulez retourner buffer.toString() dans read()! (BTW, "String Read;" semble manquer dans votre extrait de code, mais vous ne devez pas utiliser de variables majuscules non statiques.) – Stefan

+0

Alors, comment puis-je faire cela? Un extrait de code peut éventuellement aider. – Atinder

+4

Renvoie buffer.toString() en tant que dernière ligne de votre méthode read(). Et ajoutez "String Read". quelque part avant votre while-loop pour définir la variable "Read". Et vous devriez utiliser des minuscules, par ex. Ligne de chaîne; while ((line = lecteur.readLine())! = null) buffer.append (ligne + "\ n"); – Stefan

Répondre

2

return buffer.toString() dans la méthode de lecture a résolu le problème. Merci Stefan.

+0

Désolé de faire revivre ce fil après une longue période. J'ai lu un fichier du dossier 'asset', puis j'ai écrit ce fichier en utilisant' FileOutputStream'. Ma question est ce que le chemin du fichier sauvegardé par 'FileOutputStream'. –

Questions connexes