---
# System prepended metadata

title: 'M06 [Java] Accés a dades. 001. E/S amb fitxers.'
tags: [' Big Data', ' Java', DAM]

---

---
title: M06 [Java] Accés a dades. 001. E/S amb fitxers.
tags: DAM, Big Data, Java
---

[Link en MarkDown](https://hackmd.io/)
# 001. E/S amb fitxers.
## El paquet "java.io"
La biblioteca java.io és la biblioteca bàsica d'entrada/sortida de Java.
### java.io.InputStream
java.io.InputStream és la classe primaria per llegir un fluxe de dades des de qualsevol font de dades. Les dades poden venir, per exemple: de la consola, d'un socket de xarxa, d'un fitxer o d'un dispositiu perifèric, entre d'altres.
#### Mètodes de la classe 'java.io.InputStream'.
Els principals mètodes de la classe java.io.InputStream i per tant accessibles també per a les seves derivades són:
* **read()**: Llegeix el següent byte de l'stream i retorna el valor -1 en cas de que no hi hagi cap byte disponible per a ser llegit.
* **close()**: tanca l'stream i allibera els recursos involucrats.
* **read(byte [] arg)**: llegeix com a màxim tants bytes com puguin ser encabits a arg i retorna el nombre de bytes llegits. Si no hi ha cap byte disponible retorna 0.
* **skip(long arg)**: descarta tants bytes com indiqui arg.

### Algunes classes derivades de 'java.io.InputStream'.
* FileInputStream
* ByteArrayInputStream
* FilterInputStream
* PipedInputStream
* ObjectInputStream

### java.io.OutputStream
java.io.OutputStream és la classe primaria per escriure a qualsevol fluxe de dades.
#### Mètodes de la classe 'java.io.InputStream'.
Els principals mètodes de la classe java.io.OutputStream i per tant accessibles també per a les seves derivades són:
* **flush()**: força a buidar el buffer de sortida escrivint els bytes que contingui a la sortida.
* **close()**: tanca l'stream i allibera els seus recursos.
* **write(int b)**: Escriu un byte al stream.
* **write(byte[] b)**: escriu tots els bytes de b a la sortida.

#### Tipus d'streams a java.io
![](https://i.imgur.com/PXZiUU9.png)
La primera gran classificació està entre ByteStreams utilitzats per llegir i/o escriure bytes i CharacterStream, dissenyada per a llegir i/o escriure unitats de 16 bits. Molt útil per tractar amb caràcters Unicode.

### java.io.File
java.io.File ens permet gestionar un sistema d'arxius. 
Cada instància de File representa una ruta (`path`), on aquesta ruta pot èsser un directori o un fitxer. 
La ruta d'instància no es pot modificar durant tota la seva vida.