2010-12-01 3 views
1

J'écris des données aux fichiers xml dans mon application android. J'ai cherché comment faire correctement le fichier IO et trouvé que j'ai besoin d'utiliser openFileOutput. Pour autant que je peux dire qu'il n'y a rien de mal avec mon code, mais il conserve lancer une exception à la ligne que j'ai un try-catch enroulé autour dans le code suivant:openFileOutput throws exception

public void writeSearchXML(ArrayList<String> searches, String file) 
     throws Exception { 
    // try { 
    // File newxmlfile = new File(file); 
    // newxmlfile.createNewFile(); 
    // } catch (Exception e) { 
    // } 
    try { 
     // THE FOLLOWING LINE THROWS AN EXCEPTION EVERY TIME 
     FileOutputStream out = openFileOutput(file, 
       Context.MODE_WORLD_WRITEABLE); 
    } catch (Exception e) { 
     throw new Exception("Failing on fileoutput stream searches."); 
    } 
    FileOutputStream fOut = openFileOutput(file, 
      Context.MODE_WORLD_READABLE); 
    // we create a XmlSerializer in order to write xml data 
    XmlSerializer serializer = Xml.newSerializer(); 
    // we set the FileOutputStream as output for the serializer, using UTF-8 
    // encoding 
    serializer.setOutput(fOut, "UTF-8"); 
    // Write <?xml declaration with encoding (if encoding not null) and 
    // standalone flag (if standalone not null) 
    serializer.startDocument(null, Boolean.valueOf(true)); 
    // set indentation option 
    serializer.setFeature(
      "http://xmlpull.org/v1/doc/features.html#indent-output", true); 
    // start a tag called "root" 
    serializer.startTag(null, "searches"); 
    for (String search : searches) { 
     serializer.startTag(null, "search"); 
     serializer.text(search); 
     serializer.endTag(null, "search"); 
    } 
    // // i indent code just to have a view similar to xml-tree 
    // serializer.startTag(null, "username"); 
    // serializer.text(username); 
    // serializer.endTag(null, "username"); 
    // serializer.startTag(null, "password"); 
    // serializer.text(password); 
    // serializer.endTag(null, "password"); 
    // //serializer.attribute(null, "attribute", "value"); 
    serializer.endTag(null, "searches"); 
    serializer.endDocument(); 
    // write xml data into the FileOutputStream 
    serializer.flush(); 
    // finally we close the file stream 
    fOut.close(); 
} 

Le seul problème dans tout ce code est juste cette ligne. J'ai cherché partout sur Internet et je n'ai pas été en mesure d'affiner une solution. Que puis-je faire pour résoudre ce problème?

MISE À JOUR: L'exception levée est une exception fileNotFound. Cela m'amène à croire que la fonction openFileOutput ne crée pas réellement le fichier comme il le dit dans la description. Que puis-je faire dans Android pour créer le fichier sans utiliser openFileOutput?

+0

Pouvez-vous fournir le journal des erreurs s'il vous plaît. Quelle ligne est le problème? –

+0

Que pouvez-vous faire pour obtenir plus d'aide: (1) ajoutez la pile à votre question - actuellement nous ne savons même pas quel genre d'exception vous obtenez et (2) ajoutez le code de la méthode 'openFileOutput', parce que celui-ci jette l'exception. –

+0

A propos d'ajouter le stacktrace .... et la méthode 'openFileOutput' est intégré dans android. Il est séparé de 'android.content.ContextWrapper.openFileOutput' – Graham

Répondre

Questions connexes