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