---
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

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.