Je dois pouvoir sérialiser une chaîne et la sauvegarder dans un fichier .txt ou .xml. Je n'ai jamais utilisé l'implémentation pour lire/écrire des fichiers, rappelez-vous que je suis un débutant relatif. Aussi, j'ai besoin de savoir comment désérialiser la chaîne à imprimer dans le terminal comme une chaîne normale.Écrire un fichier XML (en utilisant XStream) sur un système de fichiers en Java
Répondre
Y at-il une raison particulière d'utiliser XStream? Ce serait extrêmement facile à faire avec quelque chose comme JDOM si tout ce que vous faites est de tenter de sérialiser une chaîne ou deux.
C'est-à-dire quelque chose comme: Document doc = new Document();
Element rootEl = new Element("root");
rootEl.setText("my string");
doc.appendChild(rootEl);
XMLOutputter outputter = new XMLOutputter();
outputter.output(doc);
Certains des détails ci-dessus sont probablement faux, mais c'est le flux de base. Peut-être devriez-vous poser une question plus précise afin que nous puissions comprendre exactement quel est le problème que vous rencontrez?
De http://www.xml.com/pub/a/2004/08/18/xstream.html:
import com.thoughtworks.xstream.XStream;
class Date {
int year;
int month;
int day;
}
public class Serialize {
public static void main(String[] args) {
XStream xstream = new XStream();
Date date = new Date();
date.year = 2004;
date.month = 8;
date.day = 15;
xstream.alias("date", Date.class);
String decl = "\n";
String xml = xstream.toXML(date);
System.out.print(decl + xml);
}
}
public class Deserialize {
public static void main(String[] args) {
XStream xstream = new XStream();
Date date = new Date();
xstream.alias("date", Date.class);
String xml = xstream.toXML(date);
System.out.print(xml);
Date newdate = (Date)xstream.fromXML(xml);
newdate.month = 12;
newdate.day = 2;
String newxml = xstream.toXML(newdate);
System.out.print("\n\n" + newxml);
}
}
Vous pouvez alors prendre la chaîne XML et écrire dans un fichier.
Si vous pouvez le sérialiser dans un fichier txt, ouvrez simplement un objet ObjectOutputStream et utilisez-le pour vous.
String str = "serialize me";
String file = "file.txt";
try{
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(str);
out.close();
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
String newString = (String) in.readObject();
assert str.equals(newString);
System.out.println("Strings are equal");
}catch(IOException ex){
ex.printStackTrace();
}catch(ClassNotFoundException ex){
ex.printStackTrace();
}
Vous pouvez aussi ouvrir un PrintStream juste et siphonner cette façon, puis d'utiliser un BufferedReader et readLine(). Si vous voulez vraiment avoir de la fantaisie (puisque c'est une affectation matérielle après tout), vous pouvez utiliser une boucle for et imprimer chaque caractère individuellement. L'utilisation de XML est plus compliquée que nécessaire pour sérialiser une chaîne et l'utilisation d'une bibliothèque externe est juste trop lourde.
XStream dispose d'installations pour lire et écrire dans des fichiers, voir les exemples simples (Writer.java et Reader.java) in this article.
Si vous devez créer un fichier texte contenant XML qui représente le contenu d'un objet (et le rendre bidirectionnel), il suffit d'utiliser JSON-lib:
class MyBean{
private String name = "json";
private int pojoId = 1;
private char[] options = new char[]{'a','f'};
private String func1 = "function(i){ return this.options[i]; }";
private JSONFunction func2 = new JSONFunction(new String[]{"i"},"return this.options[i];");
// getters & setters
...
}
JSONObject jsonObject = JSONObject.fromObject(new MyBean());
String xmlText = XMLSerializer.write(jsonObject);
De là, vient d'écrire la chaîne à votre fichier . Beaucoup plus simple que toutes ces API XML. Maintenant, cependant, si vous avez besoin de vous conformer à une DTD ou une XSD, c'est une mauvaise façon de procéder car c'est beaucoup plus libre et conforme uniquement à la mise en page de l'objet.
http://json-lib.sourceforge.net/usage.html
Piko
Si vous commencez Java, puis prendre un certain temps pour regarder à travers le projet Apache Commons. Il y a beaucoup d'extensions de base à Java que vous utiliserez plusieurs fois.
Je suppose que vous voulez juste conserver une chaîne pour pouvoir la relire plus tard - dans ce cas, il ne doit pas nécessairement être XML.
Pour écrire une chaîne dans un fichier, voir org.apache.commons.io.FileUtils:
FileUtils.writeStringToFile(File file,String data)
Pour relis:
FileUtils.readFileToString(File file)
Références:
http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html
Assurez-vous également de regarder commons-lang pour beaucoup de bonnes choses de base.
essayer quelque chose comme ceci:
FileOutputStream fos = null;
try {
new File(FILE_LOCATION_DIRECTORY).mkdirs();
File fileLocation = new File(FILE_LOCATION_DIRECTORY + "/" + fileName);
fos = new FileOutputStream(fileLocation);
stream.toXML(userAlertSubscription, fos);
} catch (IOException e) {
Log.error(this, "Error %s in file %s", e.getMessage(), fileName);
} finally {
IOUtils.closeQuietly(fos);
}
- 1. Comment stocker plusieurs entrées dans un fichier XML en utilisant XStream
- 2. Écrire un fichier GIF en Java
- 3. XML en utilisant Java
- 4. lecture xstream généré xml en .net
- 5. écrire un BitSet dans un fichier en Java
- 6. Lire un fichier distant en utilisant Java
- 7. Envoi d'un fichier à un serveur FTP sans l'enregistrer sur un système de fichiers en utilisant PHP
- 8. Parsing un fichier HTML en utilisant Java
- 9. Écrire des fichiers binaires en utilisant SAS?
- 10. Envoi d'un fichier en Java en utilisant un servlet
- 11. Convertir xml en xsd en utilisant java
- 12. Parse Pdf Fichier et écrire le contenu dans un fichier texte en utilisant java
- 13. Comment envoyer un fichier sur un réseau en utilisant le canal de socket dans java
- 14. Comment ajouter un espace de noms à un fichier xml en utilisant le programme java
- 15. IE7 et fichiers XML sur le système de fichiers
- 16. Comment filtrer un fichier en utilisant un modèle dans un autre fichier en utilisant Python?
- 17. comment créer un fichier .doc en utilisant java?
- 18. En utilisant java, comment obtenez-vous la quantité d'espace libre sur un système de fichiers solaris zfs?
- 19. Déploiement d'un fichier sur le système de fichiers en utilisant MOSS Solutions et fonctionnalités
- 20. écrire un fichier batch pour copier un fichier texte du système Windows au système Unix
- 21. Comment trier un fichier XML en utilisant .NET?
- 22. Extrait un sous-ensemble du fichier XML en utilisant XSL
- 23. Créer un fichier Excel en Java
- 24. Télécharger un fichier depuis Internet en utilisant java: Comment authentifier?
- 25. Modifier un fichier XML dans un fichier jar avec Java
- 26. Système de fichiers en mémoire pour Windows
- 27. Fusion de fichiers de configuration XML d'application différente en un?
- 28. Comment créer un fichier zip en Java
- 29. Sérialisation d'objets Java en xml et en arrière (configuration XML)
- 30. Renommer un fichier/dossier dans un fichier zip en Java?
+1, j'utilise: xstream.toXML (myThing, nouveau FileOutputStream (new File ("myfile.xml"))); – teejay
putain c'est 5 ans! :-) – teejay
Mis à jour le lien car il était cassé chez IBM. – smonff