Java - Escribir lo de un fichero en otro

 
Vista:
sin imagen de perfil
Val: 31
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Escribir lo de un fichero en otro

Publicado por Joker (27 intervenciones) el 03/11/2021 15:54:05
Buenas!
Estoy teniendo algún que otro problema y es que estoy pasando los caracteres que soy mayúsculas a minúsculas y viceversa. El problema esta en que a la hora de escribirlo en el otro fichero solo me escribe el último caracter.
Alguien que me pueda ayudar? Esto es lo que tengo ahora mismo.

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
public class Ejercicio1 {
 
	public static void main(String arg[]) {
 
		// Declaramos los ficheros.
		File fichero1 = new File(".\\src\\TAE02\\fichero1.txt");
		File fichero2 = new File(".\\src\\TAE02\\fichero2.txt");
 
		// Lee el fichero 1 y cambia los caracteres sean mayusculas a minuculas y viceversa.
		try (FileReader f = new FileReader(fichero1)) {
 
			int i = f.read();
			char caracter = 0;
 
			// Se pasan los caracteres que sean mayusculas a minuculas y viceversa.
			while (i != -1) {
				caracter = (char)i;
				if (caracter >= 97 && caracter <= 122) {
					caracter -= 32;
				} else if (caracter >= 65 && caracter <= 90) {
					caracter += 32;
				}
				System.out.println(caracter);
				i = f.read();
			}
 
			// Escribirá el resultado en el fichero 2.
			 try (FileWriter file = new FileWriter(fichero2)) {
				 file.write(caracter);
 
				 file.close();
			 } catch(IOException e) {
				 System.out.println("Problema en la escritura E/S " + e);
			 }
 
			// Cierra el fichero 1
			f.close();
 
		} catch (IOException e) {
			System.out.println("Problema con la E/S " + e);
		}
	}
 
}
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

Escribir lo de un fichero en otro

Publicado por Santiago (25 intervenciones) el 03/11/2021 21:17:46
Hola:

En el primer bucle:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
			// Se pasan los caracteres que sean mayusculas a minuculas y viceversa.
 
			while (i != -1) {
 
				caracter = (char)i;
 
				if (caracter >= 97 && caracter <= 122) {
 
					caracter -= 32;
 
				} else if (caracter >= 65 && caracter <= 90) {
 
					caracter += 32;
 
				}
 
				System.out.println(caracter);
 
				i = f.read();
 
			}

lees los caracteres y cambias mayúsculas a minúsculas y viceversa, pero no los escribes.

Luego, en el segundo bloque de código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
			// Escribirá el resultado en el fichero 2.
 
			 try (FileWriter file = new FileWriter(fichero2)) {
 
				 file.write(caracter);
 
 
 
				 file.close();
 
			 } catch(IOException e) {
 
				 System.out.println("Problema en la escritura E/S " + e);
 
			 }

escribes el último caracter sólo.

Prueba esto:

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
try  {
			// Abrimos los dos ficheros: lectura y escritura
			FileReader f = new FileReader(fichero1);
			FileWriter file = new FileWriter(fichero2)
 
			int i = f.read();
 
			char caracter = 0;
 
			// Se pasan los caracteres que sean mayusculas a minuculas y viceversa.
			while (i != -1) {
 
				caracter = (char)i;
 
				if (caracter >= 97 && caracter <= 122) {
 
					caracter -= 32;
 
				} else if (caracter >= 65 && caracter <= 90) {
 
					caracter += 32;
 
				}
 
				System.out.println(caracter);
				// Aquí lo imprimimos en el fichero, no sólo en la consola
				file.write(caracter);
				i = f.read();
 
			}
 
				f.close();
				file.close();
 
			 } catch(IOException e) {
 
				 System.out.println("Problema en la escritura E/S " + e);
 
			 }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar