• Martes 14 de Mayo de 2024, 20:36

Autor Tema:  ¿dónde Está El Error?  (Leído 1199 veces)

Saku

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
¿dónde Está El Error?
« en: Lunes 16 de Enero de 2006, 17:32 »
0
Hola.

Mi dominio de Java es cero patatero y lleva ya unos días atascado en este problema:

Resulta que quiero escribir un programa que lea un fichero de nombre "escrito.txt" y lo haga aparecer en pantalla. Pero con una particularidad, y es que si lee un caracter '$' ha de ignorarlo así como el resto de la línea.
Leí por ahí que esto se podía hacer facilmente con readLine, pero no termino de aclararme.
Tengo dos códigos fuente alternativos pero ninguno de los dos me funciona y me gustaría que alguno me dijeseis donde está el fallo o qué otro algoritmo podría utilizar para poder hacer funcionar el programa.
Los códigos fuente serían:

Prueba.java --->
-----------------------------------------------------------------------
import java.io.*;

class Prueba {
      public static void main(String[] args) {
        try {
            File fich = new File("escrito.txt");
            FileInputStream escrito = new FileInputStream(fich);
            int cont;
            int c;
            cont = 0;
            String tex = new String("");
             
            bucle1:
            while ((c = escrito.read()) != -1) {
               if (c == (int)'$') {
                   c = escrito.read();
                   while (c != (int)'\n') {
                      c = escrito.read();
                   }
                   continue bucle1;
               }
               else {
                  tex = tex + (char)c;
                  cont++;
               }  
            }
           

           
            System.out.println(tex);
            System.out.println(cont);
        } catch (FileNotFoundException e) {
            System.err.println("FileStreamsTest: " + e);
        } catch (IOException e) {
            System.err.println("FileStreamsTest: " + e);
        }
    }
}
-----------------------------------------------------------------------

Prueba2.java --->
------------------------------------------------------------------------
import java.io.*;

class Prueba2 {
      public static void main(String[] args) {
        try {
            File fich = new File("escrito.txt");
            FileInputStream sud = new FileInputStream(fich);
            int cont;
            int c;
            cont = 0;
            boolean sigue = true;
            String tex = new String("");
             
            bucle1:
            while ((c = escrito.read()) != -1) {
               if (c == (int)'$') {
                   sigue = false;
               }
               else {
                  sigue = true;
               }
               if (sigue) {
               tex = tex + (char)c;
               cont++;
               }
            }
           

           
            System.out.println(tex);
            System.out.println(cont);
        } catch (FileNotFoundException e) {
            System.err.println("FileStreamsTest: " + e);
        } catch (IOException e) {
            System.err.println("FileStreamsTest: " + e);
        }
    }
}
-----------------------------------------------------------------------

Muchas gracias de antemano y perdón por el tostón.

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: ¿dónde Está El Error?
« Respuesta #1 en: Martes 17 de Enero de 2006, 11:25 »
0
No te preocupes por el tostón, todos hemos tenido que aprender alguna vez.

Te diría un par de cosas:

En primer lugar, creo que te resultaría mucho más sencillo usar otro tipo de flujo de entrada en lugar de un FileInputStream, suponiendo que el archivo sea de caracteres.
Prueba a utilizar un BufferedReader:

Código: Text
  1.  
  2. BufferedReader fichero= new BufferedReader (new FileReader (archivo));
  3.  
  4.  

y ahora sí que podrás usar readLine desde la variable fichero. Ahora es tan sencillo como escribir en pantalla.

Para comparar, solamente utiliza lo siguiente:

Código: Text
  1.  
  2. linea= fichero.readLine();
  3. if (!linea.startsWith("$"))
  4.     System.out.println(linea);
  5.  
  6.  


Si usas versiones antiguas de JDK y startsWith no te funciona, tendrás que hacer comparación de cadenas. Si permites espacios en blanco antes del $, tendrás que añadir un trim() a la línea:
Código: Text
  1.  
  2. if (!linea.trim().startsWith("$"))
  3.     [...]
  4.  
  5.  


Espero que te sirva.

Suerte.


Silverfox

Saku

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: ¿dónde Está El Error?
« Respuesta #2 en: Martes 17 de Enero de 2006, 12:51 »
0
Muchas gracias.
Claro que me sirve!!!
Voy a probar ya mismo tu consejo.
Un saludo amigo.