Java - Introducir ruta como parametro del metodo

 
Vista:
sin imagen de perfil

Introducir ruta como parametro del metodo

Publicado por Gonzalo (10 intervenciones) el 06/09/2022 00:38:37
Buenas compis, me he atorado con este ejercicio que me han encomendado. Dice así:

Realiza un programa que contenga una clase censura con un método de manera que cambie unas palabras contenidas por otras, este método recibirá como parámetro la ruta al archivo , la palabra a buscar y cambiar. Desarrolla una clase main para probarlo. Pista puede usar un fichero de entrada y otro de salida.

El tema es que no se como meter la ruta al archivo como parametro dentro del mismo método para cambiar las palabras. Puedo usar la función replace para hacer el cambio de palabra pero no se como introducir el file ahí. Debo crear un objeto?? Os dejo el código que he desarrollado. El main cuento de hacer un metodo chorra para probarlo mas un menú, aun no lo he diseñado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class Censura {
 
    File rutaFicheroEntrada;
    private String palabraDeCambio;
 
    //getter y setter
 
    public File getRutaFicheroEntrada() {
        return rutaFicheroEntrada;
    }
 
    public void setRutaFicheroEntrada(File rutaFicheroEntrada) {
        this.rutaFicheroEntrada = rutaFicheroEntrada;
    }
 
    public String getPalabraDeCambio() {
        return palabraDeCambio;
    }
 
    public void setPalabraDeCambio(String palabraDeCambio) {
        this.palabraDeCambio = palabraDeCambio;
    }
 
 
    //constructor por defecto
 
    public Censura() {
    }
 
    //constructor por parametros
 
    public Censura(File rutaFicheroEntrada, String palabraDeCambio) {
        this.rutaFicheroEntrada = rutaFicheroEntrada;
        this.palabraDeCambio = palabraDeCambio;
    }
 
 
    public void cambiarPalabras(File archivo, String palabraACambiar, String palabraAReemplazar){
        String reemplazo= palabraDeCambio.replaceAll(palabraACambiar, palabraAReemplazar);
 
    }
}
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Introducir ruta como parametro del metodo

Publicado por Kabuto (1381 intervenciones) el 06/09/2022 10:43:17
Según interpreto yo el enunciado, el constructor de esa clase Censura no debería ser necesario que recibiese nada.
Los tres parámetros necesarios los recibiría directamente el método:
1
este método recibirá como parámetro la ruta al archivo , la palabra a buscar y cambiar

Una clase no tiene porque tener siempre un constructor y unos atributos.
Aquí por ejemplo, esta clase no va a modelar unas entidades concretas: personas, vehículos, animales, estudiantes, empresas, etc...

Esta clase Censura lo que hará será ejecutar una tarea concreta, así que para eso ni siquiera vamos a necesitar instanciar un objeto de Censura.
Podemos declarar su método como estático y así poder invocarlo sin tener que hacer una instancia. Simplemente le llamaremos, hará su trabajo y listo.

Sobre la ruta del archivo, la puede recibir como un String, junto con la palabra a buscar y la que la cambiará:
1
2
3
4
5
6
7
public class Censura {
 
	public static void censurar(String rutaArchivo, String buscar, String cambiar) {
 
	}
 
}

A partir de ahí, intenta desarrollar tu programa.

Yo voy a desarrollar ahora el mío por si te sirviera de ayuda/inspiración. Tú ya decides si quieres verlo antes o después de intentar tu propio código.

El proceso sería leer las líneas de texto del archivo original e ir censurando cada línea.
Cada línea censurada, las juntamos en un String. O mejor aún, en un StringBuilder que para concatenar String es más eficiente.
Cuando ya tengamos todas las líneas censuradas, ya podemos escribirlas en disco. Si no queremos alterar el archivo original, podemos hacerlo en un segundo archivo.

Opcionalmente podemos mostrar en pantalla las líneas sin censurar y después como ha quedado el texto censurado.

Con esto sería suficiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
public class Censura {
 
	public static void censurar(String rutaArchivo, String buscar, String cambiar) {
 
		File original = new File(rutaArchivo);
		StringBuilder textoCensurado = new StringBuilder();
 
		//Recopilamos líneas del texto original y las vamos censurando
		System.out.println("\t\tTEXTO ORIGINAL");
		System.out.println("\t\t----- --------\n");
		try {
			BufferedReader lector = new BufferedReader(new FileReader(original));
			String linea = lector.readLine();
			while (linea != null) {
				System.out.println(linea);
				//Censuramos linea
				linea = linea.replace(buscar, cambiar);
				//Añadimos al texto censurado
				textoCensurado.append(linea + "\n");
				//Siguiente linea
				linea = lector.readLine();
			}
			lector.close();
		} catch (FileNotFoundException e) {
			System.out.println("Archivo origen no encontrado");
		} catch (IOException e) {
			System.out.println("Error accediendo a archivo origen");
		}
 
		//Mostramos en pantalla el texto censurado
		System.out.println("\n\t\tTEXTO CENSURADO");
		System.out.println("\t\t----- ---------\n");
		System.out.println(textoCensurado.toString());
 
		//Ahora hay que volcar en disco el texto censurado.
		//Si no queremos alterar el archivo orginal, podemos crear uno nuevo
 
		//Extraemos la ruta de carpetas del original
		String ruta = original.getParent();
		//Creamos nuevo fichero con misma ruta, pero distinto nombre
		File censurado = new File(ruta + File.separator + "textoCensurado.txt");
		//Volcamos a disco
		try {
			BufferedWriter escritor = new BufferedWriter(new FileWriter(censurado, false));
			escritor.write(textoCensurado.toString());
			escritor.close();
			System.out.println("\n\nEl archivo censurado se encuentra en: " + censurado.getAbsolutePath());
		} catch (IOException e) {
			System.out.println("Error accediendo a archivo destino");
		}
 
	}
 
}

Fíjate que es una clase sin constructor ni atributos, no los necesita.
Solo tiene un método y lo hemos declarado estático, porque así luego en el programa principal de prueba podemos llamar a ese método sin tener que instanciar un objeto Censura.
1
2
3
4
5
6
7
8
9
public class Prueba {
 
	public static void main(String[] args) {
 
		Censura.censurar("d:/textos/TigreEnfermo.txt", "tigre", "Pokemon");
 
	}
 
}

Si lo ejecutamos, veremos en pantalla que se muestra el texto original, después el resultado de censurar el texto y además nos dice donde encontrar el nuevo archivo de texto censurado:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
TEXTO ORIGINAL
		----- --------
 
Un tigre que cuando cachorro habia sido capturado por humanos fue liberado luego de varios años de vida domestica.
La vida entre los hombres no habia menguado sus fuerzas ni sus instintos; en cuanto lo liberaron, corrio a la selva.
Ya en la espesura, sus hermanos teniéndolo otra vez entre ellos, le preguntaron:
-¿Que has aprendido?
 
El tigre medito sin prisa.
Quería transmitirles algún concepto sabio, trascendente.
Recordó un comentario humano: "Los tigres no son inmortales. Creen que son inmortales porque ignoran la muerte, ignoran que morirán."
Ah, pensó el tigre para sus adentros, ese es un pensamiento que los sorprenderá: no somos inmortales, la vida no es eterna.
 
-Aprendí esto- dijo por fin-. No somos inmortales solo ignoramos que alguna vez vamos a....
Los otros tigres no lo dejaron terminar de hablar, se abalanzaron sobre el, le mordieron el cuello y lo vieron desangrarse hasta morir.
Es el problema de los enfermos de muerte -dijo uno-.  Se tornan resentidos y quieren contagiar a todos.''
 
Marcelo Birmajer, El tigre enfermo
 
		TEXTO CENSURADO
		----- ---------
 
Un Pokemon que cuando cachorro habia sido capturado por humanos fue liberado luego de varios años de vida domestica.
La vida entre los hombres no habia menguado sus fuerzas ni sus instintos; en cuanto lo liberaron, corrio a la selva.
Ya en la espesura, sus hermanos teniéndolo otra vez entre ellos, le preguntaron:
-¿Que has aprendido?
 
El Pokemon medito sin prisa.
Quería transmitirles algún concepto sabio, trascendente.
Recordó un comentario humano: "Los Pokemons no son inmortales. Creen que son inmortales porque ignoran la muerte, ignoran que morirán."
Ah, pensó el Pokemon para sus adentros, ese es un pensamiento que los sorprenderá: no somos inmortales, la vida no es eterna.
 
-Aprendí esto- dijo por fin-. No somos inmortales solo ignoramos que alguna vez vamos a....
Los otros Pokemons no lo dejaron terminar de hablar, se abalanzaron sobre el, le mordieron el cuello y lo vieron desangrarse hasta morir.
Es el problema de los enfermos de muerte -dijo uno-.  Se tornan resentidos y quieren contagiar a todos.''
 
Marcelo Birmajer, El Pokemon enfermo
 
 
 
El archivo censurado se encuentra en: d:\textos\textoCensurado.txt



Cualquier duda, solo tienes que preguntar.
Un saludo.
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