Bonjour,
Je cherche à faire un petit bout de programme permettant de transformer en majuscules un fichier en entrée. Pour ce faire, j'utilise le pattern décorateur comme suit :
Code :
- public class UpperCaseInputStream extends FilterInputStream{
- protected UpperCaseInputStream(InputStream in) {
- super(in);
- }
-
- public int read() throws IOException {
- int c = super.read();
-
- return (c != -1 ? c : Character.toUpperCase((char)c));
-
-
- }
- public int read(byte[] b, int offset, int len) throws IOException {
- int result = super.read(b, offset, len);
- for (int i = offset; i < offset+result; i++) {
- b[i] = (byte)Character.toUpperCase((char)b[i]);
- }
- return result;
- }
- }
|
Et en test :
Code :
- public void testUpper () throws Exception {
-
- InputStream is = new UpperCaseInputStream(new BufferedInputStream(new FileInputStream(new File("README.TXT" )))); //le fichier contient une petite phrase toute bête en minuscules
- int c = is.read();
- while (c != -1) {
- System.out.println((char)c);
- }
- is.close();
-
- }
|
Et à l'affichage sur la console, j'obtiens une boucle infinie me sortant des tirets " - ", sans fin. Si quelqu'un sait où est mon erreur, merci pour l'aide apportée