bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


java_lectura_escriptura

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

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] (actual)
albert_palacios_jimenez
Línia 2: Línia 2:
  
 {{tag> #FpInfor #Dam #DamMp06 #DamMp06Uf1 #DamMp06Uf01}} {{tag> #FpInfor #Dam #DamMp06 #DamMp06Uf1 #DamMp06Uf01}}
- 
  
 ---- ----
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:
 </code> </code>
  
-==== Serialitzar ==== 
  
 +==== Escriptura i lectura d'arxius amb dades de List<String> ====
  
-Serialitzar és transformar un objecte en una cadena de bytes que es poden llegir per reconstruir l’objecte original.+Per escriure arxius per guardar-hi les dades d'una llista de textos, es pot fer amb:
  
-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: ‘**implements java.io.Serializable**’ 
- 
-Exemple de guardar un objecte "Serialitzable" en un arxiu binari: 
- 
-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<String> en un arxiu de text
  
-   private static final long serialVersionUID = -299482035708790407L; +public class EscripturaArxiuList { 
-   private String name; +    public static void main(String args[]) { 
-   private String gender+        String basePath = System.getProperty("user.dir") + "/"
-   private int age; +        String filePath = basePath + "ArxiuEscriu.txt";
-   private String role;+
  
-   public StreamEmployee(String n) { this.name = n; } +        System.out.println("");
-   public String getGender() { return gender; } +
-   public void setGender(String gender) { this.gender = gender; } +
-   public int getAge() { return age; } +
-   public void setAge(int age) { this.age = age; } +
-   public String getRole() { return role; } +
-   public void setRole(String role) { this.role = role; } +
-   @Override +
-   public String toString() { +
-       return "Employee:: Name=+ this.name + " Age=" + this.age + " Gender=" + this.gender + " Role=" + this.role; +
-   } +
-}+
  
-</code>+        try { 
 +            List<Stringlinies = new ArrayList<String>(); 
 +            linies.add("Del xoc i la confusió apareixen les pors,"); 
 +            linies.add("perills i destruccions inapreciables per la"); 
 +            linies.add("majoria de la gent, per sectors específics"); 
 +            linies.add("de la societat i la majoria de governants."); 
 +            linies.add("La natura, a través d'huracans, terratrèmols,"); 
 +            linies.add("fam i pandèmies genera xoc i confusió.");
  
-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("Llest");
-   public static void main(String[] args{+
  
-       StreamEmployee emp = new StreamEmployee("Pankaj"); +        } catch (IOException e) { e.printStackTrace();
- +    }
-       emp.setAge(35); +
-       emp.setGender("Male"); +
-       emp.setRole("CEO"); +
-       System.out.println(emp); +
-       +
-       try { +
-           FileOutputStream fos = new FileOutputStream("EmployeeObject.ser"); +
-           ObjectOutputStream oos = new ObjectOutputStream(fos); +
-           oos.writeObject(emp); +
-           System.out.println("Done"); +
-           oos.close(); +
-           fos.close(); +
-       } catch (IOException e) { e.printStackTrace();+
-   }+
 } }
 </code> </code>
  
-Exemple de com llegir un arxiu amb un objecte serialitzat:+Per llegir arxius guardats amb el mètode anterior cap a una List<String>:
  
-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 static void main(String[] args) {+
  
-       FileInputStream is; +public class LecturaArxiuList { 
-       try +    public static void main(String args[]) 
-           is new FileInputStream("EmployeeObject.ser"); +        String basePath System.getProperty("user.dir"+ "/"
-           ObjectInputStream ois new ObjectInputStream(is); +        String filePath basePath + "Arxiu.txt";
-           StreamEmployee emp = (StreamEmployee) ois.readObject();+
  
-           ois.close(); +        System.out.println(""); 
-           is.close(); + 
-           System.out.println(emp.toString()); +        try { 
-       catch (ClassNotFoundException e) { +            List<String> linies = Files.readAllLines(Paths.get(filePath), StandardCharsets.UTF_8); 
-           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();
 + 
 +    }
 } }
 </code> </code>
  
-**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'arxius amb dades de List<String> ==== 
  
-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 un objecte en una cadena de bytes que es poden llegir per reconstruir l’objecte original.
-// d'una List<String> en un arxiu de text+
  
-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("user.dir") + "/"; +
-        String filePath = basePath + "ArxiuEscriu.txt";+
  
-        System.out.println("");+Per fer que una classe sigui serialitzable en JAVA ha de implementar: ‘**implements java.io.Serializable**’
  
-        try { +Exemple de guardar un objecte "Serialitzableen un arxiu binari:
-            List<String> linies = new ArrayList<String>(); +
-            linies.add("Del xoc i la confusió apareixen les pors,"); +
-            linies.add("perills i destruccions inapreciables per la"); +
-            linies.add("majoria de la gent, per sectors específics"); +
-            linies.add("de la societat i la majoria de governants."); +
-            linies.add("La natura, a través d'huracans, terratrèmols,"); +
-            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("Llest");+public class StreamEmployee implements Serializable {
  
-        catch (IOException e) { e.printStackTrace(); } +   private static final long serialVersionUID = -299482035708790407L; 
-    }+   private String name; 
 +   private String gender; 
 +   private int age; 
 +   private String role; 
 + 
 +   public StreamEmployee(String n) { this.name = n; } 
 +   public String getGender() { return gender; } 
 +   public void setGender(String gender) { this.gender = gender; } 
 +   public int getAge() { return age; } 
 +   public void setAge(int age) { this.age = age; } 
 +   public String getRole() { return role; } 
 +   public void setRole(String role) { this.role = role; } 
 +   @Override 
 +   public String toString() { 
 +       return "Employee:: Name=" + this.name + " Age=" + this.age + " Gender=" + this.gender + " Role=" + this.role; 
 +   }
 } }
-</code> 
  
-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 static void main(String[] args) {
  
-public class LecturaArxiuList { +       StreamEmployee emp new StreamEmployee("Pankaj");
-    public static void main(String args[]) { +
-        String basePath System.getProperty("user.dir"+ "/"; +
-        String filePath = basePath + "Arxiu.txt";+
  
-        System.out.println("");+       emp.setAge(35); 
 +       emp.setGender("Male"); 
 +       emp.setRole("CEO"); 
 +       System.out.println(emp); 
 +       
 +       try { 
 +           FileOutputStream fos = new FileOutputStream("EmployeeObject.ser"); 
 +           ObjectOutputStream oos = new ObjectOutputStream(fos); 
 +           oos.writeObject(emp); 
 +           System.out.println("Done"); 
 +           oos.close(); 
 +           fos.close(); 
 +       } catch (IOException e) { e.printStackTrace();
 +   } 
 +
 +</code>
  
-        try { +Exemple de com llegir un arxiu amb un objecte serialitzat:
-            List<String> linies = Files.readAllLines(Paths.get(filePath), StandardCharsets.UTF_8); +
-            for (int cnt = 0; cnt < linies.size(); cnt = cnt + 1) { +
-                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 { 
 +   public static void main(String[] args) { 
 + 
 +       FileInputStream is; 
 +       try { 
 +           is = new FileInputStream("EmployeeObject.ser"); 
 +           ObjectInputStream ois = new ObjectInputStream(is); 
 +           StreamEmployee emp = (StreamEmployee) ois.readObject(); 
 + 
 +           ois.close(); 
 +           is.close(); 
 +           System.out.println(emp.toString()); 
 +       } catch (ClassNotFoundException e) { 
 +           e.printStackTrace(); 
 +       } catch (IOException e) { e.printStackTrace();
 +   }
 } }
 </code> </code>
 +
 +**Nota**: Cal tenir en compte, que els objectes serialitzats només es poden llegir en la mateixa versió de Java.
  
 ==== Escriptura i lectura d'arxius amb dades de ArrayList<> d'Objectes ==== ==== Escriptura i lectura d'arxius amb dades de ArrayList<> d'Objectes ====
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'exemple. 
 +
 +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>
  
 <code java> <code java>
java_lectura_escriptura.1669304460.txt.gz · Darrera modificació: 2022/11/24 15:41 per albert_palacios_jimenez