Tout d'abord présentons les utilitaires de bases : java.util.io.UtilIO.
Il contient diverses méthodes pour faciliter le transfert de données, l'écriture de flux.
En plus de la création/suppression de fichiers et de dossier, on peut également accéder aux fichiers à coté du jar contenant la classe. Les chemins sont alors exprimés relativement à ce répertoire.
De plus deux outils pour le compression et décompression de fichier ou dossier.

java.util.io.ByteArray est tableau de byte qui possède une possibilité d'être utilisé comme un flux avec les méthodes getInputStream() et getOutputStream() qui respectivement permettent de lire et écrire dans le tableau. Plusieurs méthodes sont mises à disposition afin de faciliter la lecture ou l'écriture de données.

La notion de java.util.io.Binarizable sert pour transférer/stocker des objets plus complexes que les types primitifs, les String ou les enum.
Un java.util.io.Binarizable possède une méthode pour extraire les données d'unjava.util.io.ByteArray et une méthode pour s'y sauvegarder. Il doit posséder toujours un constructeur vide public, pour le moment. Il est bien entendu obligatoire de faire le parsing et l'écriture dans le même ordre. C'est à dire si on écrit un boolean, un char, puis un String, il faudra lire un boolean, un char puis un String
Afin de gérer plus aisément l'évolution du code et palier à la contrainte précédemment citée, la classe HashmapedBinarizable à été créée. Ci dessous un exemple simplifié de situations réelles :
Supposons que dans une première version d'une application on est créé la classe Image comme suit : Puis quelques temps plus tard, la classe Image doit évoluer, on doit lui rajouter la notion de position, de plus la notion de visibilité c'est transformé en alpha (Degré de transparence). Une version compatible avec les anciennes données peut être facilement écrite en : On obtient ainsi, avec peu d'effort, une version compatible avec les anciennes données. Si on essaie de lire un ancien stokage de données Image, la nouvelle va récupéré la taille, aura comme position (0, 0) valeur par défaut et selon la visibilité ancienne sera totalement opaque ou bien totalement transparente.
Remarque : si des données ne sont plus nécessaire d'une version à la suivante, elles seront simplement ignorées.