Programmation Java/Entrées Sorties
Les opérations d'entrées-sorties concernent la lecture (entrée) et l'écriture (sortie) de données à travers différents types de flux... 
En Java, les opérations d'entrées-sorties de base sont gérées par les classes du package codice_1. Ces classes obéissent au patron de conception décorateur. Ces objets sont souvent créés au sein d'objets correspondant au patron de conception fabrique.
Flux d'entrée-sortie.
Le package codice_1 possède deux classes principales :
Ces deux classes abstraites définissent des fonctions bas-niveau et sont implémentées dans différentes sous-classes concrètes.
Il y a plusieurs types de flux dont : les flux sur fichiers, les flux sur tubes, et les flux sur zones de mémoire.
Par exemple on a :
La classe codice_7 possèdent des méthodes retournant des instances concrètes des classes codice_3 et codice_4 pour lire et écrire depuis/vers la socket TCP.
codice_10.
La classe codice_10 possèdent des méthodes lisant une série d'octets (byte).
Les deux dernières méthodes lisent une série d'octets dans un tableau, mais peuvent retourner un nombre inférieur à celui demandé pour différentes raisons :
codice_20.
La classe codice_20 possède des méthodes écrivant une série d'octets (byte).
codice_28.
La classe codice_28 hérite de la classe codice_20, et permet d'afficher tous les types de données sous forme textuelle. 
La sortie standard et l'erreur standard impriment sur la console et sont des instances de la classe codice_28.
Exemple : 
system.out.println("Bonjour !"); // Affiche une chaîne avec retour à la ligne
int count = 100;
system.out.print(count); // Affiche un entier sans retour à la ligne
system.out.print(' '); // Affiche un caractère
Tout objet peut être affiché car les méthodes codice_32 et codice_33 appellent la méthode codice_34 définie dans la classe codice_35 racine de l'arbre hiérarchique de tous les types d'objets.
Exemple :
class NombreComplexe
 double n_real, n_img;
 public NombreComplexe(double r, double i)
 this.n_real = r;
 this.n_img = i;
 public String toString()
 return n_real + " + i*"+n_img;
NombreComplexe a = new NombreComplexe(1.0, 0.5);
system.out.println(a); // Appelle println(Object) pour afficher :
// 1.0 + i*0.5
La méthode codice_36 est également appelée implicitement lors de la concaténation de chaînes de caractères :
String resultat = "Solution complexe : " + a;
// -> Solution complexe : 1.0 + i*0.5
Il est donc important que cette méthode n'ait aucun effet de bord (modification d'un objet, synchronisation, ...).
Lecture-écriture haut niveau.
Le package codice_1 possède des classes permettant la lecture et l'écriture de différents types de données.
Reader, Writer, PrintStream, Scanner.
Pour intéragir avec l'utilisateur dans la console.
Exemple de saisie d'un tableau de noms utilisant la classe codice_38 :
import java.util.*;
public class ArrayExample
 static Scanner input = new Scanner(System.in);
 public static void main(String[] args)
 int nombre_de_noms = getInt("Nombre d'entrées du tableau ?");
 String[] noms = new String[nombre_de_noms];
 // Saisie
 for (int i = 0; i < noms.length; i++)
 noms[i] = getString("Entrée n°" + (i+1));
 // Affichage
 for (int i = 0; i < noms.length; ++i)
 System.out.println(noms[i]);

public static int getInt(String prompt)
 System.out.print(prompt + " ");
 int entier = input.nextInt();
 input.nextLine(); // Ignorer la fin de la ligne jusqu'au retour à la ligne.
 return entier;