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:26] – [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 214: | Línea 231: | ||
DOMImplementation dom = builder.getDOMImplementation(); | DOMImplementation dom = builder.getDOMImplementation(); | ||
+ | //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 222: | Línea 240: | ||
Text texto = null; | Text texto = null; | ||
+ | //Recorro la lista de productos y creo un subnodo producto por cada elemento | ||
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 235: | 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 250: | 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 284: | 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 303: | Línea 335: | ||
} | } | ||
} | } | ||
- | . . . | + | |
</ | </ | ||
Línea 309: | 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 329: | Línea 367: | ||
} | } | ||
} | } | ||
- | . . . | + | |
</ | </ | ||
Línea 1149: | 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 1155: | 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.1541518011.txt.gz · Última modificación: 2024/09/16 16:05 (editor externo)