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 | ||
java_lectura_escriptura [2022/11/24 15:41] albert_palacios_jimenez |
java_lectura_escriptura [2022/11/24 17:02] 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 11: | 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 86: | Línia 86: | ||
</ | </ | ||
- | ==== Serialitzar ==== | ||
+ | ==== Escriptura i lectura d' | ||
- | Serialitzar és transformar un objecte en una cadena | + | Per escriure arxius per guardar-hi les dades d'una llista |
- | Serialitzar permet guardar objectes JAVA en arxius o transmetre’ls a través de la xarxa. | ||
- | |||
- | Per fer que una classe sigui serialitzable en JAVA ha de implementar: | ||
- | |||
- | Exemple de guardar un objecte " | ||
- | |||
- | StreamEmployee.java | ||
<code java> | <code java> | ||
- | import java.io.Serializable; | + | import java.io.IOException; |
+ | import java.nio.charset.Charset; | ||
+ | import java.nio.file.Files; | ||
+ | import java.nio.file.Path; | ||
+ | import java.nio.file.Paths; | ||
+ | import java.util.ArrayList; | ||
+ | import java.util.List; | ||
- | public class StreamEmployee implements Serializable { | + | // Aquest exemple escriu els continguts |
+ | // d'una List< | ||
- | private | + | public class EscripturaArxiuList { |
- | | + | public |
- | private | + | String |
- | private int age; | + | String |
- | | + | |
- | | + | System.out.println("" |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | } | + | |
- | } | + | |
- | </code> | + | try { |
+ | List<String> linies = new ArrayList< | ||
+ | linies.add(" | ||
+ | linies.add(" | ||
+ | linies.add(" | ||
+ | linies.add(" | ||
+ | linies.add(" | ||
+ | linies.add(" | ||
- | StreamWriteMain.java | + | Path out = Paths.get(filePath); |
- | <code java> | + | Files.write(out, linies, Charset.defaultCharset()); |
- | import java.io.FileOutputStream; | + | |
- | import java.io.ObjectOutputStream; | + | |
- | import java.io.IOException; | + | |
- | public class StreamWriteMain { | + | System.out.println(" |
- | | + | |
- | | + | |
- | + | } | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | + | ||
- | try { | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | } catch (IOException e) { e.printStackTrace(); | + | |
- | | + | |
} | } | ||
</ | </ | ||
- | Exemple de com llegir | + | Per llegir |
- | StreamReadMain.java | ||
<code java> | <code java> | ||
- | import java.io.FileInputStream; | ||
- | import java.io.FileNotFoundException; | ||
- | import java.io.FileOutputStream; | ||
- | import java.io.ObjectInputStream; | ||
- | import java.io.ObjectOutputStream; | ||
import java.io.IOException; | import java.io.IOException; | ||
+ | import java.nio.charset.StandardCharsets; | ||
+ | import java.nio.file.Files; | ||
+ | import java.nio.file.Paths; | ||
+ | import java.util.List; | ||
- | public class StreamReadMain { | + | // Aquest exemple llegeix un arxiu de text en una List<String> |
- | | + | |
- | | + | public class LecturaArxiuList { |
- | try { | + | |
- | is = new FileInputStream("EmployeeObject.ser"); | + | |
- | ObjectInputStream ois = new ObjectInputStream(is); | + | |
- | | + | |
- | ois.close(); | + | System.out.println("" |
- | is.close(); | + | |
- | | + | try { |
- | | + | List< |
- | e.printStackTrace(); | + | for (int cnt = 0; cnt < linies.size(); cnt = cnt + 1) { |
- | } catch (IOException e) { e.printStackTrace(); | + | System.out.println(linies.get(cnt)); |
- | | + | } |
+ | } catch (IOException e) { e.printStackTrace(); | ||
+ | |||
+ | | ||
} | } | ||
</ | </ | ||
- | **Nota**: Cal tenir en compte, que els objectes serialitzats només es poden llegir en la mateixa versió de Java. | ||
==== DataOutputStream i DataInputStream ==== | ==== DataOutputStream i DataInputStream ==== | ||
Línia 240: | Línia 215: | ||
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. | 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' | ||
- | Per escriure arxius per guardar-hi les dades d'una llista de textos, es pot fer amb: | + | ==== Serialitzar ==== |
- | <code java> | ||
- | import java.io.IOException; | ||
- | import java.nio.charset.Charset; | ||
- | import java.nio.file.Files; | ||
- | import java.nio.file.Path; | ||
- | import java.nio.file.Paths; | ||
- | import java.util.ArrayList; | ||
- | import java.util.List; | ||
- | // Aquest exemple escriu els continguts | + | Serialitzar és transformar |
- | // d'una List< | + | |
- | public class EscripturaArxiuList { | + | Serialitzar permet guardar objectes JAVA en arxius o transmetre’ls a través de la xarxa. |
- | public static void main(String args[]) { | + | |
- | String basePath = System.getProperty(" | + | |
- | String filePath = basePath + " | + | |
- | System.out.println("" | + | Per fer que una classe sigui serialitzable en JAVA ha de implementar: |
- | try { | + | Exemple |
- | List< | + | |
- | linies.add(" | + | |
- | linies.add(" | + | |
- | linies.add(" | + | |
- | linies.add(" | + | |
- | linies.add(" | + | |
- | linies.add("fam i pandèmies genera xoc i confusió."); | + | |
- | Path out = Paths.get(filePath); | + | StreamEmployee.java |
- | Files.write(out, linies, Charset.defaultCharset()); | + | <code java> |
+ | import java.io.Serializable; | ||
- | System.out.println(" | + | public class StreamEmployee implements Serializable { |
- | | + | |
- | } | + | |
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | public void setAge(int age) { this.age = age; } | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
} | } | ||
- | </ | ||
- | Per llegir arxius guardats amb el mètode anterior cap a una List<String>: | + | </code> |
+ | StreamWriteMain.java | ||
<code java> | <code java> | ||
+ | import java.io.FileOutputStream; | ||
+ | import java.io.ObjectOutputStream; | ||
import java.io.IOException; | import java.io.IOException; | ||
- | import java.nio.charset.StandardCharsets; | ||
- | import java.nio.file.Files; | ||
- | import java.nio.file.Paths; | ||
- | import java.util.List; | ||
- | // Aquest exemple llegeix un arxiu de text en una List<String> | + | public class StreamWriteMain { |
+ | | ||
- | public class LecturaArxiuList { | + | StreamEmployee emp = new StreamEmployee("Pankaj"); |
- | public static void main(String args[]) { | + | |
- | String basePath | + | |
- | String filePath = basePath + " | + | |
- | | + | |
+ | | ||
+ | | ||
+ | System.out.println(emp); | ||
+ | |||
+ | try { | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } catch (IOException e) { e.printStackTrace(); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
- | try { | + | Exemple de com llegir un arxiu amb un objecte serialitzat: |
- | List< | + | |
- | for (int cnt = 0; cnt < linies.size(); | + | |
- | System.out.println(linies.get(cnt)); | + | |
- | } | + | |
- | } catch (IOException e) { e.printStackTrace(); | + | |
- | | + | StreamReadMain.java |
+ | <code java> | ||
+ | import java.io.FileInputStream; | ||
+ | import java.io.FileNotFoundException; | ||
+ | import java.io.FileOutputStream; | ||
+ | import java.io.ObjectInputStream; | ||
+ | import java.io.ObjectOutputStream; | ||
+ | import java.io.IOException; | ||
+ | |||
+ | public class StreamReadMain { | ||
+ | | ||
+ | |||
+ | | ||
+ | try { | ||
+ | is = new FileInputStream(" | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | } catch (ClassNotFoundException e) { | ||
+ | | ||
+ | } catch (IOException e) { e.printStackTrace(); | ||
+ | } | ||
} | } | ||
</ | </ | ||
+ | |||
+ | **Nota**: Cal tenir en compte, que els objectes serialitzats només es poden llegir en la mateixa versió de Java. | ||
==== Escriptura i lectura d' | ==== Escriptura i lectura d' | ||
Línia 401: | Línia 404: | ||
Igualment, com amb les dades primitives, es poden guardar objectes de manera ordenada: | Igualment, com amb les dades primitives, es poden guardar objectes de manera ordenada: | ||
+ | |||
+ | Objecte serialitzable d' | ||
+ | |||
+ | Objecte.java | ||
+ | <code java> | ||
+ | import java.io.Serializable; | ||
+ | |||
+ | public class Objecte implements Serializable { | ||
+ | String nom; | ||
+ | String utilitat; | ||
+ | |||
+ | Objecte (String nom, String utilitat) { | ||
+ | this.nom = nom; | ||
+ | this.utilitat = utilitat; | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public String toString () { | ||
+ | return "Nom: " + this.nom + ", Utilitat: " + this.utilitat; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
<code java> | <code java> |