InputStream est utilisé pour la lecture, OutputStream pour l'écriture. Ils sont connectés en tant que décorateurs les uns aux autres de telle sorte que vous pouvez lire/écrire tous les différents types de données à partir de toutes les différentes sources.
Par exemple, vous pouvez écrire des données primitives dans un fichier :
File file = new File("C:/text.bin");
file.createNewFile();
DataOutputStream stream = new DataOutputStream(new FileOutputStream(file));
stream.writeBoolean(true);
stream.writeInt(1234);
stream.close();
Pour lire le contenu écrit :
File file = new File("C:/text.bin");
DataInputStream stream = new DataInputStream(new FileInputStream(file));
boolean isTrue = stream.readBoolean();
int value = stream.readInt();
stream.close();
System.out.printlin(isTrue + " " + value);
Vous pouvez utiliser d'autres types de flux pour améliorer la lecture/écriture. Par exemple, vous pouvez introduire un tampon pour l'efficacité :
DataInputStream stream = new DataInputStream(
new BufferedInputStream(new FileInputStream(file)));
Vous pouvez écrire d'autres données telles que des objets :
MyClass myObject = new MyClass(); // MyClass doit implémenter Serializable
ObjectOutputStream stream = new ObjectOutputStream(
new FileOutputStream("C:/text.obj"));
stream.writeObject(myObject);
stream.close();
Vous pouvez lire à partir d'autres sources d'entrée différentes :
byte[] test = new byte[] {0, 0, 1, 0, 0, 0, 1, 1, 8, 9};
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(test));
int value0 = stream.readInt();
int value1 = stream.readInt();
byte value2 = stream.readByte();
byte value3 = stream.readByte();
stream.close();
System.out.println(value0 + " " + value1 + " " + value2 + " " + value3);
Pour la plupart des flux d'entrée, il existe également un flux de sortie. Vous pouvez définir vos propres flux pour lire/écrire des choses spéciales et il existe des flux complexes pour lire des choses complexes (par exemple il existe des flux pour lire/écrire au format ZIP).