Pour copier des données d'un flux d'entrée dans un flux de sortie, vous écrivez des données pendant que vous le lisez, soit un octet (ou un caractère), soit une ligne à la fois.
Voici un exemple qui lit dans un fichier convertissant tous les caractères 'x' en 'y'.
BufferedInputStream in = new BufferedInputStream(new FileInputStream("input.dat"));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("output.dat"));
int ch;
while((ch = in.read()) != -1) {
if (ch == 'x') ch = 'y';
out.write(ch);
}
out.close();
in.close();
Ou si peut utiliser un lecteur et traiter une ligne à la fois peut alors utiliser cette aproche:
BufferedReader reader = new BufferedReader(new FileReader("input.dat"));
PrintWriter writer = new PrintWriter(
new BufferedOutputStream(new FileOutputStream("output.dat")));
String str;
while ((str = reader.readLine()) != null) {
str = str.replace('x', 'y'); // replace character at a time
str = str.replace("abc", "ABC"); // replace string sequence
writer.println(str);
}
writer.close();
reader.close();
BufferedInputStream et BufferedReader lire l'avant et garder 8K de caractères dans un tampon pour la performance. Les fichiers très volumineux peuvent être traités en ne conservant que 8 Ko de caractères en mémoire à la fois.
Un InputStream vous donne octets. Si vous connaissez votre encodage, vous pouvez utiliser un lecteur pour obtenir des caractères. Vous pouvez ensuite regarder chaque personnage au passage et le remplacer au besoin. –
Oui. Je vous remercie. Je pensais s'il y a déjà une solution de pré-construction disponible? –
Peut-être. Qu'avez-vous cherché jusqu'à présent? –