Para el tratamiento de los flujos de bytes, hemos dicho que Java tiene dos clases abstractas que son InputStream y OutputStream.
Los archivos binarios guardan una representación de los datos en el archivo, es decir, cuando guardamos texto no guardan el texto en si, sino que guardan su representación en un código llamado UTF-8.
Las clases principales que heredan de OutputStream, para la escritura de ficheros binarios son:
- FileOutputStream: escribe bytes en un fichero. Si el archivo existe, cuando vayamos a escribir sobre él, se borrará. Por tanto, si queremos añadir los datos al final de éste, habrá que usar el constructor
FileOutputStream(String filePath, boolean append)
, poniendo append a true. - ObjectOutputStream: convierte objetos y variables en vectores de bytes que pueden ser escritos en un OutputStream.
- DataOutputStream, que da formato a los tipos primitivos y objetos String, convirtiéndolos en un flujo de forma que cualquier DataInputStream, de cualquier máquina, los pueda leer. Todos los métodos empiezan por "write", como writeByte(), writefloat(), etc.
De InputStream, para lectura de ficheros binarios, destacamos:
- FileInputStream: lee bytes de un fichero.
- ObjectInputStream: convierte en objetos y variables los vectores de bytes leídos de un InputStream.