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();
    }