Java - Escribir ficheros

 
Vista:
sin imagen de perfil
Val: 15
Ha disminuido su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Escribir ficheros

Publicado por Gyanna (5 intervenciones) el 12/10/2019 18:10:49
Buenas,
Estoy intentado hacer un programa que me escriba en un fichero de texto vocales y en un fichero binario consonantes y el problema que tengo es que me crea los ficheros pero no escribe en fichero de texto.

¿Me podéis dar una mano por favor?

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
import java.io.*;
import java.util.*;
 
public class tarea1 {
	public static void main(String[] args) throws IOException  {
 
        //Crear el fichero de caracteres
		File caracteres=new File ("mis_ficheros/consonantes.txt");
        FileWriter escribeCaracter=new FileWriter(caracteres);
 
 
        //crear un fichero binario
        FileOutputStream salida=new FileOutputStream("mis_ficheros/vocales.dat");
        DataOutputStream datos=new DataOutputStream(salida);
 
        //pedir la cadena de caracteres
        Scanner sc=new Scanner(System.in);
        System.out.println("introduzca una cadena de caracteres");
        String cadena=sc.nextLine();
 
 
        //Comprobar si los caracteres cumplen uno a uno la condicion y escribirlos en los ficheros
        for (int i=0; i<cadena.length();i++) {
            if (cadena.charAt(i)=='a'||cadena.charAt(i)=='A' || cadena.charAt(i)=='e'||cadena.charAt(i)=='E' ||
                cadena.charAt(i)=='i'|| cadena.charAt(i)=='I'||cadena.charAt(i)=='o' ||cadena.charAt(i)=='O' ||
                        cadena.charAt(i)=='U'||cadena.charAt(i)=='u') {
                datos.write((char)i);
            }
            else {escribeCaracter.write((char)i);}
 
        }
        //por ultimo cerramos los flujos de datos
        datos.close();escribeCaracter.close();
        salida.close();
 
	}
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 Alejandro
Val: 77
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Escribir ficheros

Publicado por Alejandro (15 intervenciones) el 12/10/2019 19:37:47
1
2
3
4
...{
datos.write((char)i);
}
else {escribeCaracter.write((char)i);}

"i" es la variable del contador y no el carácter en curso.

1
2
3
4
5
...{
   datos.write(cadena.charAt(i));
}else{
   escribeCaracter.write(cadena.charAt(i));
}
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
sin imagen de perfil
Val: 15
Ha disminuido su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Escribir ficheros

Publicado por Gyanna (5 intervenciones) el 12/10/2019 20:01:05
Muchísimas gracias!!!! Solucionado
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
Val: 15
Ha disminuido su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Escribir ficheros

Publicado por Gyanna (5 intervenciones) el 12/10/2019 21:30:22
Hola otra vez,

He hecho otro programa parecido, esta vez con un mensaje de dialogo en el cual pido que se escriba una letra y dice si es mayúscula o minúscula y si es minúscula que me lo escriba en un fichero de texto y si es mayúscula en un fichero binario y el problema que tengo es la letra que me escribe en el fichero binario se lee como texto, no me lo muestra como carácter..... además que me genera varios ficheros en vez de sobreescribir..

¿Me puede ayudar por favor?

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
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
 
import javax.swing.JOptionPane;
 
public class tarea1Georgy {
 
	public static void main(String[] args) throws IOException {
 
		File f = new File ("misFicheros/minuscula.txt");
		FileWriter fw = new FileWriter(f);
 
		FileOutputStream salida = new FileOutputStream("misFicheros/MAYUSCULA.dat");
		DataOutputStream datos = new DataOutputStream(salida);
 
		char letra;
 
 
		letra = JOptionPane.showInputDialog("Escribe una letra ").charAt(0);
 
		if (Character.isUpperCase(letra)) {
 
			JOptionPane.showMessageDialog(null, "Es una letra mayúscula");
			datos.write(letra);
			datos.flush();
		}
		else {
			JOptionPane.showMessageDialog(null, "Es una letra minúscula");
			fw.write(letra);
			fw.flush();
		}
 
		fw.close();
		datos.close();
		salida.close();
 
	}
 
}
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
Imágen de perfil de Alejandro
Val: 77
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Escribir ficheros

Publicado por Alejandro (15 intervenciones) el 15/10/2019 17:44:56
Supongo que seria así, la verdad no se, también me estoy iniciando en Java.
1
datos.write(letra.getBytes());
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
sin imagen de perfil
Val: 15
Ha disminuido su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Escribir ficheros

Publicado por Gyanna (5 intervenciones) el 15/10/2019 23:50:27
No...tampoco es así ... pero agradezco mucho tu respuesta
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
Val: 147
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Escribir ficheros

Publicado por Yamil Bracho (2302 intervenciones) el 16/10/2019 00:03:20
Prueba con :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
File fMin = new File("misFicheros/minuscula.txt");
f.CreateNewFile();
FileWriter fwMinus = new FileWriter(fMin)
 
File fMay = new File("misFicheros/MAYUSCULA.txt");
f.CreateNewFile();
DataOutputStream datos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(fMay)))) {
 
char letra = JOptionPane.showInputDialog("Escribe una letra ").charAt(0);
if (Character.isUpperCase(letra)) {
    JOptionPane.showMessageDialog(null, "Es una letra mayúscula");
	datos.write(letra);
	datos.flush();
} else {
	JOptionPane.showMessageDialog(null, "Es una letra minúscula");
	fw.write(letra);
	fw.flush();
}
 
fw.close();
datos.close();
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