Du fait de l'utilisation de l'unicode par Java, il y a deux grandes hiérarchies de classes pour les entrées/sorties: celles concernant les flots d'octets et celle concernant les flots de caractère (unicode). La différence essentielle réside dans ce qui est lu ou écrit à chaque fois (un byte ou un char)
Pour les flots de caractères, les deux superclasses sont Reader (pour la lecture) et Writer. Pour ces classes et leurs dérivées, l'unité de base est donc le caractère unicode.
Pour les flots d'octets, les deux superclasses sont InputStream et OutputStream. Pour ces classes et leurs dérivées, l'unité de base est donc l'octet.
Suivant le genre de flot considéré, on aura
transparent
Type | Flot de caractères | Flot d'octets |
---|---|---|
Mémoire | CharArrayReader | ByteArrayInputStream |
CharArrayWriter | ByteArrayOutputStream | |
StringReader | StringBufferInputStream | |
StringWriter | ||
Tube | PipedReader | PipedInputStream |
PipedWriter | PipedWriterStream | |
Fichier | FileReader | FileInputStream |
FileWriter | FileOutputStream |