Comme premier exemple d'utilisation de ces méthodes, la procédure suivante lit sur un flot d'octets in, octet par octet, et les écrit sur un flot d'octets out ; on notera que les types des paramètres sont abstraits :
static void copier(InputStream in, OutputStream out) throws IOException { int c; while ((c = in.read()) != -1) out.write(c); }
En l'absence de récupération de l'exception IOException, cette procédure doit déclarer qu'elle est susceptible de déclencher (c'est-à-dire de propager) cette exception, d'où la clause throws dans l'en-tête de la fonction. Une autre façon d'écrire cette itération est la suivante :
int c = in.read(); while (c != -1) { out.write(c); c = in.read(); }