Necesito poder serializar una cadena y luego guardarla en un archivo .txt o .xml. Nunca he usado la implementación para leer/escribir archivos, solo recuerda que soy un principiante relativo. Además, necesito saber cómo deserializar la cadena que se imprimirá en el terminal como una cadena normal.Escribir un archivo XML (usando XStream) en un sistema de archivos en Java
Respuesta
¿Hay alguna razón en particular para usar XStream? Esto sería extremadamente fácil de hacer con algo como JDOM si todo lo que estás haciendo es tratar de serializar una o dos cadenas.
Es decir, algo así como: Documento doc = new Documento();
Element rootEl = new Element("root");
rootEl.setText("my string");
doc.appendChild(rootEl);
XMLOutputter outputter = new XMLOutputter();
outputter.output(doc);
Algunos de los detalles anteriores son probablemente incorrectos, pero ese es el flujo básico. Tal vez debería hacer una pregunta más específica para que podamos entender exactamente qué problema es lo que está teniendo.
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);
}
}
A continuación, puede tomar la cadena XML y escribir en un archivo.
Si puede serializarlo en un archivo txt, simplemente abra ObjectOutputStream y haga que use la capacidad de serialización de String para usted.
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();
}
También puedes, simplemente abrir una PrintStream y sifón que de esa manera, a continuación, utilizar un BufferedReader y readLine(). Si realmente quieres ser elegante (ya que esta es una tarea HW después de todo), puedes usar un ciclo for e imprimir cada carácter individualmente. Usar XML es más complicado de lo que necesita para serializar un String y usar una biblioteca externa es exagerado.
XStream tiene funciones para leer y escribir en archivos, vea los ejemplos simples (Writer.java y Reader.java) in this article.
Si necesita crear un archivo de texto que contiene XML que representa el contenido de un objeto (y que sea bidireccional), sólo tiene que utilizar la biblioteca JSON:
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);
A partir de ahí acaba de escribir la cadena para su archivo . Mucho más simple que todas las API XML. Ahora, sin embargo, si necesita ajustarse a una DTD o XSD, esta es una mala forma de hacerlo, ya que es mucho más de formato libre y se ajusta solo al diseño del objeto.
http://json-lib.sourceforge.net/usage.html
Piko
Si usted está comenzando Java, a continuación, tomar algún tiempo para mirar a través del proyecto Apache Commons. Hay muchas extensiones básicas para Java que utilizará muchas veces.
Supongo que solo quiere conservar una cadena para que pueda leerla más tarde, en cuyo caso no necesariamente tiene que ser XML.
Para escribir una cadena en un archivo, consulte org.apache.commons.io.FileUtils:
FileUtils.writeStringToFile(File file,String data)
Para leer de nuevo:
FileUtils.readFileToString(File file)
Referencias:
http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html
Asegúrate también de mirar commons-lang para obtener muchas cosas básicas buenas.
intentar algo como esto:
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. Escribir en un archivo XML en Java
- 2. Cómo analizar XML a un objeto Java usando XStream
- 3. Generar clase Java a partir de un archivo XML, usando XStream
- 4. Serialise a YAML usando XStream en Java
- 5. ¿Escribir un archivo en UTF-8 usando FileWriter (Java)?
- 6. ¿Es posible leer/escribir bits de un archivo usando JAVA?
- 7. ¿Cómo escribir XML (grande) en un archivo en C#?
- 8. Deserialize elemento XML vacío usando xstream
- 9. Escribir un sistema de archivos EXT4 en C?
- 10. Escribir un archivo descargado binario en un disco en Java
- 11. Java: escribir un DOM en un archivo XML (problemas de formato)
- 12. Escribir XML en el archivo daña los archivos en python
- 13. Java xstream - Ignorar la etiqueta que no existe en XML
- 14. escribir algunos caracteres como '<' en un archivo XML
- 15. Android: Cómo escribir varios selectores en un único archivo xml
- 16. ¿Cómo escribir un flujo en un archivo?
- 17. ¿Sugerencias para escribir un analizador de archivos en Java?
- 18. Escribir el archivo xml usando la biblioteca lxml en Python
- 19. Intentando escribir un archivo en un directorio diferente usando fopen()
- 20. eliminar la cabecera XML desde un archivo XML en Java
- 21. intentar escribir en un archivo XML existente para C#
- 22. Escribir un archivo en formato xlsx usando Apache POI
- 23. Comparando dos archivos xml usando JAVA
- 24. Leer, modificar, escribir archivo xml en cocoa
- 25. java: ¿escribir archivos grandes?
- 26. Un ejemplo de encriptación de un archivo xml en Java usando castillo hinchable
- 27. Extraer un elemento XML desde un archivo XML usando XPath
- 28. ¿Cómo acceder a un sistema de archivos en Java?
- 29. C++ Serialización Limpiar XML Similar a XSTREAM
- 30. ¿Escribir un archivo en "Sector 0" usando C#?
+1, yo uso: xstream.toXML (MYTHing, nuevo FileOutputStream (nuevo archivo ("myfile.xml"))); – teejay
maldita sea 5 años! :-) – teejay
Se ha actualizado el enlace porque se rompió en IBM. – smonff