Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia Ultima revisió Ambdós costats nova versio | ||
java_lectura_escriptura [2022/11/24 15:57] albert_palacios_jimenez |
java_lectura_escriptura [2022/11/24 17:00] albert_palacios_jimenez |
||
---|---|---|---|
Línia 1: | Línia 1: | ||
====== Lectura i escriptura d' | ====== Lectura i escriptura d' | ||
- | {{tag> #FpInfor #Dam #DamMp06 #DamMp06Uf1 # | + | {{tag> #FpInfor #Dam #DamMp06 #DamMp06Uf1 # |
---- | ---- | ||
Línia 10: | Línia 10: | ||
- De text: guarden dades en format text (caràcters llegibles) | - De text: guarden dades en format text (caràcters llegibles) | ||
+ | |||
- Binaris: guarden dades en format binari (0s i 1s) | - Binaris: guarden dades en format binari (0s i 1s) | ||
Per llegir arxius de text fem servir dues classes: | Per llegir arxius de text fem servir dues classes: | ||
- | - **File**: representa una ruta al sistema de fitxers | + | - **File**: representa una ruta al sistema de fitxers, i permet |
* Manipular la jerarquia d’arxius (crear arxius i carpetes, borrar, renombrar …) | * Manipular la jerarquia d’arxius (crear arxius i carpetes, borrar, renombrar …) | ||
Línia 84: | Línia 85: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | |||
+ | ==== DataOutputStream i DataInputStream ==== | ||
+ | |||
+ | Per guardar dades primitives de manera ordenada en arxius, hi ha les classes " | ||
+ | |||
+ | Exemple de guardar dades primitives amb " | ||
+ | |||
+ | <code java> | ||
+ | File file = new File(" | ||
+ | | ||
+ | FileOutputStream fileOutputStream = null; | ||
+ | DataOutputStream dataOutputStream = null; | ||
+ | try { | ||
+ | fileOutputStream=new FileOutputStream(file); | ||
+ | dataOutputStream=new DataOutputStream(fileOutputStream); | ||
+ | dataOutputStream.writeInt(50); | ||
+ | dataOutputStream.writeDouble(400.25); | ||
+ | dataOutputStream.writeUTF(“Hola”); | ||
+ | dataOutputStream.flush(); | ||
+ | } catch (IOException e) { | ||
+ | e.printStackTrace(); | ||
+ | } finally { | ||
+ | try { | ||
+ | if(fileOutputStream!=null){ fileOutputStream.close(); | ||
+ | if(dataOutputStream!=null){ dataOutputStream.close(); | ||
+ | } catch (Exception e) { | ||
+ | e.printStackTrace(); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Exemple de llegir dades primitives amb " | ||
+ | (Es llegeixen en l' | ||
+ | |||
+ | <code java> | ||
+ | FileInputStream fileInputStream = null; | ||
+ | DataInputStream dataInputStream = null; | ||
+ | try { | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } catch (IOException e) { | ||
+ | | ||
+ | }finally { | ||
+ | try { | ||
+ | | ||
+ | | ||
+ | } catch (Exception e) { | ||
+ | e.printStackTrace(); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Cal tenir en compte que els objectes no són dades primitives i per tant no es poden guardar i llegir amb els mètodes anteriors. | ||
+ | |||
==== Serialitzar ==== | ==== Serialitzar ==== | ||
Línia 182: | Línia 241: | ||
**Nota**: Cal tenir en compte, que els objectes serialitzats només es poden llegir en la mateixa versió de Java. | **Nota**: Cal tenir en compte, que els objectes serialitzats només es poden llegir en la mateixa versió de Java. | ||
- | |||
- | ==== DataOutputStream i DataInputStream ==== | ||
- | |||
- | Per guardar dades primitives de manera ordenada en arxius, hi ha les classes " | ||
- | |||
- | Exemple de guardar dades primitives amb " | ||
- | |||
- | <code java> | ||
- | File file = new File(" | ||
- | | ||
- | FileOutputStream fileOutputStream = null; | ||
- | DataOutputStream dataOutputStream = null; | ||
- | try { | ||
- | fileOutputStream=new FileOutputStream(file); | ||
- | dataOutputStream=new DataOutputStream(fileOutputStream); | ||
- | dataOutputStream.writeInt(50); | ||
- | dataOutputStream.writeDouble(400.25); | ||
- | dataOutputStream.writeUTF(“Hola”); | ||
- | dataOutputStream.flush(); | ||
- | } catch (IOException e) { | ||
- | e.printStackTrace(); | ||
- | } finally { | ||
- | try { | ||
- | if(fileOutputStream!=null){ fileOutputStream.close(); | ||
- | if(dataOutputStream!=null){ dataOutputStream.close(); | ||
- | } catch (Exception e) { | ||
- | e.printStackTrace(); | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | Exemple de llegir dades primitives amb " | ||
- | (Es llegeixen en l' | ||
- | |||
- | <code java> | ||
- | FileInputStream fileInputStream = null; | ||
- | DataInputStream dataInputStream = null; | ||
- | try { | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | } catch (IOException e) { | ||
- | | ||
- | }finally { | ||
- | try { | ||
- | | ||
- | | ||
- | } catch (Exception e) { | ||
- | e.printStackTrace(); | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | Cal tenir en compte que els objectes no són dades primitives i per tant no es poden guardar i llegir amb els mètodes anteriors. | ||
==== Escriptura i lectura d' | ==== Escriptura i lectura d' | ||
Línia 492: | Línia 495: | ||
} | } | ||
} | } | ||
- | </ | ||
- | |||
- | ==== Arxius XML ==== | ||
- | |||
- | Els arxius XML poden tenir un tractament especial, per tal de poder accedir directament a les dades que contenen a través del seu arbre. | ||
- | |||
- | Per llegir arxius XML fem servir " | ||
- | |||
- | <code java> | ||
- | try { | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | }} catch(Exception e) { e.printStackTrace(); | ||
- | </ | ||
- | |||
- | En aquest exemple es veu com es poden llegir els atributs i continguts dels elements d'un arxiu XML: | ||
- | |||
- | <code java> | ||
- | for(int cnt = 0; cnt < listStudents.getLength(); | ||
- | Node nodeEstudiant = listStudents.item(cnt); | ||
- | | ||
- | | ||
- | | ||
- | txt = txt + "> Student " | ||
- | txt = txt + ", Name: " | ||
- | | ||
- | } | ||
- | </ | ||
- | |||
- | Cal fixar-se que es comprova que els elements siguin de tipus " | ||
- | |||
- | Aleshores ja es poden llegir els atributs o els altres elements que tingui dins. | ||
- | |||
- | == XPath == | ||
- | |||
- | Per poder accedir més fàcilment als elements de l' | ||
- | |||
- | <code java> | ||
- | Document doc = dBuilder.parse(file); | ||
- | |||
- | XPath xPath = XPathFactory.newInstance().newXPath(); | ||
- | String expression = "/ | ||
- | NodeList listExpression = (NodeList) xPath.compile(expression).evaluate(doc, | ||
- | |||
- | Element elm = (Element) listExpression.item(0); | ||
- | | ||
- | String txt = ""; | ||
- | txt = txt + "> Student " | ||
- | txt = txt + ", Name: " | ||
- | |||
- | System.out.println(txt); | ||
- | </ | ||
- | |||
- | En l' | ||
- | |||
- | == Generar un arbre XML amb elements i atributs == | ||
- | |||
- | Aquest exemple mostra com es pot generar un arbre XML amb elements i atributs: | ||
- | |||
- | <code java> | ||
- | |||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | Attr attrId = doc.createAttribute(" | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | Finalment, per escriure un arbre XML com l' | ||
- | |||
- | |||
- | |||
- | <code java> | ||
- | // Save a Document into an XML file | ||
- | static public void write (String path, Document doc) { | ||
- | try { | ||
- | TransformerFactory transformerFactory = TransformerFactory.newInstance(); | ||
- | Transformer transformer = transformerFactory.newTransformer(); | ||
- | transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, | ||
- | transformer.setOutputProperty(OutputKeys.INDENT, | ||
- | trimWhitespace(doc); | ||
- | DOMSource source = new DOMSource(doc); | ||
- | StreamResult result = new StreamResult(new File(path)); | ||
- | transformer.transform(source, | ||
- | } catch (TransformerException e) { e.printStackTrace(); | ||
- | } | ||
</ | </ | ||