apuntes:ficheros
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
apuntes:ficheros [2018/11/06 15:27] – [Ficheros XML] fernando | apuntes:ficheros [2024/09/16 16:03] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 60: | Línea 60: | ||
<code java> | <code java> | ||
- | FileWriter fichero = null; | ||
PrintWriter escritor = null; | PrintWriter escritor = null; | ||
- | try { | + | |
- | | + | escritor |
- | | + | escritor.println(" |
- | | + | escritor.close(); |
- | } catch (IOException ioe) { | + | |
- | ioe.printStackTrace() ; | + | |
- | } finally { | + | |
- | if (fichero != null) | + | |
- | try { | + | |
- | fichero.close(); | + | |
- | } catch (IOException ioe) { . . . } | + | |
- | } | + | |
</ | </ | ||
Línea 83: | Línea 74: | ||
Scanner lector = null; | Scanner lector = null; | ||
- | try { | + | lector = new Scanner(fichero); |
- | lector = new Scanner(fichero); | + | while(lector.hasNextLine()){ |
- | | + | |
- | System.out.println(lector.nextLine()); | + | |
- | } | + | |
- | } catch (FileNotFoundException e) { | + | |
- | | + | |
- | }finally { | + | |
- | | + | |
- | lector.close(); | + | |
- | } | + | |
} | } | ||
+ | lector.close(); | ||
</ | </ | ||
+ | |||
+ | === Otras formas de escribir/ | ||
+ | |||
+ | * Escribir Con FileWriter | ||
+ | <code java> | ||
+ | FileWriter writer = new FileWriter(" | ||
+ | writer.write(" | ||
+ | writer.close(); | ||
+ | |||
+ | |||
+ | //Si quiero que no me sobrescriba el fichero destino | ||
+ | FileWriter writer = new FileWriter(" | ||
+ | |||
+ | </ | ||
+ | |||
+ | * Con BufferedWriter / Reader | ||
+ | <code java> | ||
+ | BufferedWriter writer = new BufferedWriter(" | ||
+ | writer.write(" | ||
+ | writer.close(); | ||
+ | |||
+ | |||
+ | BufferedReader reader = new BufferedReader(" | ||
+ | cadena = reader.readLine(); | ||
+ | |||
+ | //Mientras haya lineas para leer (no devuelva null) | ||
+ | while( cadena != null ){ | ||
+ | | ||
+ | | ||
+ | } | ||
+ | reader.close(); | ||
+ | </ | ||
+ | |||
==== Ficheros de configuración ==== | ==== Ficheros de configuración ==== | ||
Línea 216: | Línea 233: | ||
//Creo un documento XML y creo el nodo raiz " | //Creo un documento XML y creo el nodo raiz " | ||
Document documento = dom.createDocument(null, | Document documento = dom.createDocument(null, | ||
- | Element raiz = document.createElement(" | + | Element raiz = documento.createElement(" |
documento.getDocumentElement().appendChild(raiz); | documento.getDocumentElement().appendChild(raiz); | ||
Línea 223: | Línea 240: | ||
Text texto = null; | Text texto = null; | ||
- | //Recorro la lista de productos y creo un nodo producto por cada elemento | + | //Recorro la lista de productos y creo un subnodo |
for (Producto producto : listaProductos) { | for (Producto producto : listaProductos) { | ||
nodoProducto = documento.createElement(" | nodoProducto = documento.createElement(" | ||
raiz.appendChild(nodoProducto); | raiz.appendChild(nodoProducto); | ||
+ | | ||
+ | //Por cada dato de cada producto creo un nuevo subnodo | ||
nodoDatos = documento.createElement(" | nodoDatos = documento.createElement(" | ||
nodoProducto.appendChild(nodoDatos); | nodoProducto.appendChild(nodoDatos); | ||
texto = documento.createTextNode(producto.getNombre()); | texto = documento.createTextNode(producto.getNombre()); | ||
nodoDatos.appendChild(texto); | nodoDatos.appendChild(texto); | ||
+ | | ||
nodoDatos = documento.createElement(" | nodoDatos = documento.createElement(" | ||
nodoProducto.appendChild(nodoDatos); | nodoProducto.appendChild(nodoDatos); | ||
Línea 237: | Línea 257: | ||
} | } | ||
+ | //Finalizo el documento xml y lo guardo en un fichero de texto | ||
Source src = new DOMSource(documento); | Source src = new DOMSource(documento); | ||
Result resultado = new StreamResult(new File(" | Result resultado = new StreamResult(new File(" | ||
Línea 252: | Línea 273: | ||
//Recorro cada uno de los elementos producto para obtener sus campos | //Recorro cada uno de los elementos producto para obtener sus campos | ||
- | NodeList productos = documento.getElementyByTagName(" | + | NodeList productos = documento.getElementsByTagName(" |
for (int i = 0; i < productos.getLength(); | for (int i = 0; i < productos.getLength(); | ||
Node producto = productos.item( i ); | Node producto = productos.item( i ); | ||
Element elemento = ( Element ) producto; | Element elemento = ( Element ) producto; | ||
System.out.println(elemento.getElementsByTagName(" | System.out.println(elemento.getElementsByTagName(" | ||
- | System.out.println(elemento.getElementsByTagName(" | + | System.out.println(elemento.getElementsByTagName(" |
} | } | ||
Línea 286: | Línea 307: | ||
Hay que tener en cuenta que durante el proceso de serialización, | Hay que tener en cuenta que durante el proceso de serialización, | ||
+ | |||
+ | ===Interface Serializable=== | ||
+ | Para poder guardar objetos de una clase directamente en un fichero binario, todas las clases a las que pertenecen los objetos que guarde deben implementar '' | ||
+ | |||
+ | Por ejemplo, si quiero guardar una lista de productos directamente en fichero, tanto la clase ArrayList, como la clase Producto, deben ser Serializable. ArrayList ya lo es, así que debemos implementarla sobre las clases que nosotros creamos (Producto en este caso). | ||
=== Serializar un objeto === | === Serializar un objeto === | ||
<code java> | <code java> | ||
- | . . . | + | FileOutputStream flujoSalida = null; |
ObjectOutputStream serializador = null; | ObjectOutputStream serializador = null; | ||
try { | try { | ||
- | | + | |
+ | serializador = new ObjectOutputStream(flujoSalida); | ||
+ | |||
+ | //Escribo el ArrayList completo | ||
serializador.writeObject(listaProductos); | serializador.writeObject(listaProductos); | ||
+ | | ||
} catch (IOException ioe) { | } catch (IOException ioe) { | ||
. . . | . . . | ||
Línea 305: | Línea 335: | ||
} | } | ||
} | } | ||
- | . . . | + | |
</ | </ | ||
Línea 311: | Línea 341: | ||
<code java> | <code java> | ||
- | . . . | ||
List< | List< | ||
+ | |||
+ | FileInputStream flujoEntrada = null; | ||
ObjectInputStream deserializador = null; | ObjectInputStream deserializador = null; | ||
+ | |||
try { | try { | ||
- | | + | |
+ | deserializador = new ObjectInputStream(flujoEntrada); | ||
+ | |||
+ | //Leo el ArrayList | ||
listaProductos = (ArrayList< | listaProductos = (ArrayList< | ||
+ | | ||
} catch (FileNotFoundException fnfe ) { | } catch (FileNotFoundException fnfe ) { | ||
fnfe.printStackTrace(); | fnfe.printStackTrace(); | ||
Línea 331: | Línea 367: | ||
} | } | ||
} | } | ||
- | . . . | + | |
</ | </ | ||
Línea 1151: | Línea 1187: | ||
===== Proyectos de ejemplo ===== | ===== Proyectos de ejemplo ===== | ||
- | Los proyectos | + | Los proyectos |
Para manejaros con Git recordad que tenéis una serie de videotutoriales en la sección [[extra: | Para manejaros con Git recordad que tenéis una serie de videotutoriales en la sección [[extra: | ||
Línea 1157: | Línea 1193: | ||
Por otra parte, para el tema de [[http:// | Por otra parte, para el tema de [[http:// | ||
- | También, los proyectos de ejemplo de estos apuntes están en el [[http:// | + | También, los proyectos de ejemplo de estos apuntes están en el [[http:// |
apuntes/ficheros.1541518079.txt.gz · Última modificación: 2024/09/16 16:05 (editor externo)