je développe une application android. j'ai une communication entre mon application (client) et un erveur web. j'utilise les servlet pour gérer cette communication. le serveur web doit générer un fichier xml et l'enregistrer sur ma tablette.
là j'ai réussi à créer le fichier xml et l'enregistrer sur le disque dur de mon pc.
try
{
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = builderFactory.newDocumentBuilder();
//creating a new instance of a DOM to build a DOM tree.
Document doc = docBuilder.newDocument();
new AuthentificationServlet().createXml(doc);
out.println(" fichier xml enregistre ");
}
catch(Exception e)
{
System.out.println(e);
}
private void createXml(Document doc) throws TransformerException, IOException {
//creer un noeud
Element root = doc.createElement("configuration");
//ajouter un noeud après le dernier fils noeud
doc.appendChild(root);
Element child = doc.createElement("matricule");
root.appendChild(child);
Text text = doc.createTextNode("1234");
child.appendChild(text);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
//creer string from xml tree
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(doc);
transformer.transform(source, result);
String xmlString = sw.toString();
File file = new File("c:/newxml.xml");
BufferedWriter bw = new BufferedWriter (new OutputStreamWriter(new FileOutputStream(file)));
bw.write(xmlString);
bw.flush();
bw.close();
}
Mais il me reste de l'enregistrer sur le disque dur de ma tablette.
je ne sais pas qu'est ce que je dois donner comme chemin à mon FileOutputStream pour qu'il enregistre ce fichier sur le disque dur de mon media Android
Ensuite tu peux utiliser le fichier comme un fichier classique (il faudra surement que tu utilises le chemin absolue ; avec l’émulateur tu risques d'avoir des erreurs mais si tu utilises ta tablette/téléphone en mode debug ça devrais passer (puis c'est plus fluide pour les tests)).
Au passage si tu veux stocker sur une SD, tu peux également t'aider de l'objet android.os.Environment:
// test si la partoche est montée et si elle est en lecture seule:
String state = Environment.getExternalStorageState();
if (!Environment.MEDIA_MOUNTED.equals(state))
Log.d(TAG, "ARG non montée :)");
if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))
Log.d(TAG, "ARG lecture seule!");
-----
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
Pour ce qui est du chemin à utiliser ... seule toi le sait... la seule chose que je peux te dire c'est qu'il ne s'agit pas un système de fichiers à la MS donc pas de C:, etc...
il faut que tu te bases sur le fonctionnement des systèmes de fichiers unix '/' étant la racine.
Exemple chez moi la SD interne est sur /mnt/sdcard et l'externe sur /mnt/sdcard-ext.
Sauf si le système est root tu ne peux pas écrire où tu veux (exemple pas dans '/')
-----
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."