Java - Otro novato en apuros

 
Vista:

Otro novato en apuros

Publicado por Saku (1 intervención) el 16/01/2006 20:37:21
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.
Pregunté en otros foros pero o bien no me contestaron o bien me dieron consejos un poco complicados para mi actual nivel.
El caso es que 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.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Otro novato en apuros

Publicado por PsyBoy (39 intervenciones) el 17/01/2006 03:15:21
Bueno, no he leido todo tu código (q hueva je, je) pero te puedo decir q usar el método readLine() de la clase BufferedReader es la opcion mas simple, te mostraré como:

FileInputStreamReader leedor = new FileInputStreamReader( String nombreFile);
BufferedReader k = new BufferedReader(new InputStreamReader( leedor ));

String linea = "";

while( linea != null )
{
linea = k.readLine();
//aqui va tu código
}

readLine() es un método que te devuelve un string, la cual se guarda en la variable linea, siempre al final de un archivo lo siguiente q sigue es null, osea q cuando llegue al final del archivo terminará el ciclo, luego abajo de la lectura de la linea podes buscar en el string y verificar si existe el caracter deseado y terminar automáticamente el ciclo, ahi es tu eleccion

espero q te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otro novato en apuros

Publicado por Saku (2 intervenciones) el 17/01/2006 12:08:27
Claro que me sirve!!! Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Otro novato en apuros

Publicado por chuidiang (950 intervenciones) el 17/01/2006 08:30:09
Hola:

En cuanto a lo de ignorar a partir del $, una vez leida una linea completa como te han dicho, puedes usar la clase StringTokenizer.

Esta clase la instancias pasándole la linea en cuestión y el caracter $ para "partirla". Luego le pides el primer token (todos los caracteres hasta el primer $). Si no hay $ te devuelve la linea entera y si lo hay, hasta ese $. Ese primer token es justo lo que necesitas: la linea hasta el primer $.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otro novato en apuros

Publicado por Saku (2 intervenciones) el 17/01/2006 12:10:02
Gracias por vuestra ayuda. Voy a intentarlo ya mismo.
Un saludo a ambos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar