Título: Abrir archivo, leer datos y modificarlos en otro archivo. Publicado por: Tonyskater en 22 Mayo 2017, 12:18 pm Hola tengo una duda con un ejercicio que estoy haciendo de LeetSpeak, el enunciado es el siguiente:
a) Dado el siguiente archivo de texto traduce el LeetSpeak a letras. b)Dado el siguiente archivo de texto traduce el siguiente texto a LeetSpeak El archivo es una simple cadena de texto cualquiera. Con la siguiente formula no deberia ser un problema traducirlos: (https://s8.postimg.org/zb3x7822t/Captura.png) (https://postimg.org/image/h8aug0681/) Lo cual en mi codigo es lo siguiente: Código Esto funciona bien, ahora viene cuando explota mi cabeza... En general este es mi Código
El tema es que no escribe nada, osea lee el archivo bien, lo muestra y cuando llega el momento eliges la opcion del menu que quieres y no crea el archivo traducido. Esta es mi funcion escribir: Código Acabo de empezar hace escasos días con ficheros y no me aclaro muy bien... Gracias de antemano espero que me podáis ayudar. Título: Re: Abrir archivo, leer datos y modificarlos en otro archivo. Publicado por: Tonyskater en 22 Mayo 2017, 12:25 pm Iba a modificar el post pero pasaban cosas raras con los caracteres prefiero "responderlo"
Este es un ejemplo de Ejecución (https://s14.postimg.org/9ovwxtqht/Captura2.png) (https://postimg.org/image/m3ioy5hzx/) No, no crea el archivo, ni salta ningun error, el programa pasa de mi... Título: Re: Abrir archivo, leer datos y modificarlos en otro archivo. Publicado por: Serapis en 22 Mayo 2017, 16:33 pm Normalmente cuando alguien empieza, ni se explica bien, ni pone código (o pone solo 4 líneas), y suele ser un refrito de tripas revueltas. Así que lo primero es felicitarte, porque no caes en ninguna de esas cuestiones.
De entrada, yo te sugeriría que usaras tu alfabeto 1337 tanto en minúsculas como en mayúsculas. Es decir: Tal como tienes: 0 1 2 3 4 5 6 7 8 9 o i z e a s g t b p Pero también: 0 1 2 3 4 5 6 7 8 9 O I Z E A S G T B P de hecho, mucho mejor si todo el texto quedara en mayúsculas, pero bueno... cuando te funcione ya decidirás... Lo segundo, es señalarte que hacerlo en la forma de 'Replace', en realidad exige recorrer 10 veces el texto, para hacer el cambio. En cada ocasión recorre todo el texto, buscando cada vez una determinada letra que cambiar. Si el texto es corto (que es lo habitual), no importa, será tan rápido que no se aprecia ninguna tardanza. Si el texto fuera largo, o lo haces con muchos ficheros podría ser hasta 10 veces más lento de lo que realmente necesita ser. Para ello, habría que generar un alfabeto, para traducir de uno a otro sistema: Código: // Esta función podría llamarse al principio, cuando se crea la clase, que alberga el código (se genera una sola vez, se invoca una sola vez). Luego ya se puede usar la tabla (que proceda) en una funcion de traducir. Código: // Una enumeración para señalar la dirección de traduccion (podría ser remplazado por un valor buleano, eso al gusto, lo dejo así por más claridad). ----------------------- Y ahora mirando tú código... qué falla?. Bueno falla que tu lees una línea de código, la conviertes y nada más convertirla la escribes a UN NUEVO FICHERO Cada VEZ. Lo que debes hacer primero es crear el fichero de salida, y luego simplemente es mandar escribir al final del fichero, es decir la acción es APPEND (añadir al final), tu sobrescribes el mismo fichero con cada línea que lees y traduces del origen, y lo cierras con cada vez. Cuando escribas todas las líneas, (es decir al final del bucle de lectura), es cuando debes cerrar el fichero de escritura. Por tanto tus pasos (simplificados), serían: Código: Funcion Traducir(FicheroOrigen, otrosparametros...) Como ves el código es bien sencillo y claro... ahora tu traduce de pseudocódigo... No olvides controlar las posibles excepciones. que yo no ponga (casi) nada al respecto, obedece a que puedas verlo y entenderlo con claridad.... No he mirado nada más en tu código (solo por encima) y tras ver ese fallo, asumo que no tienes más... en cualquier caso, corrige/modifica y ya veremos si tienes más fallos. Título: Re: Abrir archivo, leer datos y modificarlos en otro archivo. Publicado por: Serapis en 22 Mayo 2017, 22:43 pm Nota que describo dos funciones traducir... hay sobrecarga...
Una traduce un texto, la otra traduce un fichero (y lo guarda en otro). Pero si te produce confusión, puedes explicitar un nombre diferente para cada una: TraducirFichero(...) TraducirTexto(...) Título: Re: Abrir archivo, leer datos y modificarlos en otro archivo. Publicado por: Tonyskater en 23 Mayo 2017, 12:37 pm Nota que describo dos funciones traducir... hay sobrecarga... Una traduce un texto, la otra traduce un fichero (y lo guarda en otro). Pero si te produce confusión, puedes explicitar un nombre diferente para cada una: TraducirFichero(...) TraducirTexto(...) Hola, gracias por responder, lo leí anoche pero no podía contestar. En principio entiendo lo que me dices y creo que es una buena forma de hacerlo, gracias. Pero ahora mismo no me preocupa la "fluidez" con que haga la operación ya que es un ejercicio simple de clase y no creo que mi profesor se vaya a poner a traducir libros de texto con mi programa.. O sí, pero no se lo recomiendo... :silbar: He reducido el problema general a una duda simple, mi cerebro no procesa donde tengo que realizar las operaciones... Tengo un ejemplo sencillo aislado: Código
En los comentarios he situado las dudas... Gracias de nuevo! Título: Re: Abrir archivo, leer datos y modificarlos en otro archivo. Publicado por: Serapis en 24 Mayo 2017, 03:41 am No se rompe el ordenador por 'probarlo'...
Si, ese es el sitio exacto donde va. Yo solo añadiría tras el "write", otro System.out.println(linea); así ves como era la línea a la entrada y tras la conversión... y ahí si observas error, corrige según veas que error arroja... después de todo, siempre cuando se está emepezando es buena práctiva añadir líneas de código extra a modo de debug, para ir probando no solo errores, si no incluso ideas nuevas... p.d.: de haber sabido antes que era un ejercicio de clase, te lo hubiera dejado para que pensaras un poco más... pero creo sinceramente que lo hubieras hecho, en general la gente es perezosa y no se lo toma demasiado en serio, parece que tú sí... Título: Re: Abrir archivo, leer datos y modificarlos en otro archivo. Publicado por: Tonyskater en 24 Mayo 2017, 20:25 pm No se rompe el ordenador por 'probarlo'... Si, ese es el sitio exacto donde va. Yo solo añadiría tras el "write", otro System.out.println(linea); así ves como era la línea a la entrada y tras la conversión... y ahí si observas error, corrige según veas que error arroja... después de todo, siempre cuando se está emepezando es buena práctiva añadir líneas de código extra a modo de debug, para ir probando no solo errores, si no incluso ideas nuevas... p.d.: de haber sabido antes que era un ejercicio de clase, te lo hubiera dejado para que pensaras un poco más... pero creo sinceramente que lo hubieras hecho, en general la gente es perezosa y no se lo toma demasiado en serio, parece que tú sí... Bueno cuando te gusta algo, aunque sea una obligación, no te cuesta nada ponerte, o por lo menos es mi caso... Aunque lo has dicho bien "parece", creo que solo me tomo enserio las cosas que me interesan, programación es una de ellas, luego hay otras que ni intentándolo... Como puede ser Administración de sistemas, no digo que no lo saque, sino que me da igual que sea un 5 que un 10... No me gusta. Por otro lado. tengo en clase el código final... a ver si mañana lo cojo y os lo subo para q veáis que tal ha ido. Gracias por la ayuda. ;-) ;-) |