Anda di halaman 1dari 25

ACTIVIDADES TEMA 3.

1
1.- Realiza un programa donde utilices los métodos sobre directorios isDirectory, mkdir,
mkdirs, exist, delete, list y listRoots.

package ejerciciosficherossegundotrimestre;
import java.io.*;
/**
* Clase Ejercicio 1
*
* Esta clase contiene todos los metodos para trabajar con directorios, isDirectory
* , mkdir, mkdirs, exist, delete, list y listRoots
*
* @author Jaime Solas Lara
*/
public class Ejercicio1 {
public static void main(String args[]){

/*
*Realiza un programa donde utilices los métodos sobre directorios isDirectory, mkdir,
*mkdirs, exist, delete, list y listRoots.
*/

InputStreamReader flujo = new InputStreamReader(System.in);


BufferedReader teclado = new BufferedReader(flujo);
int opcion = 0;

do
{
try
{
System.out.println("¿Que quieres hacer?");
System.out.println("1.- Saber si un directorio es un directorio");
System.out.println("2.- Crear un directorio");
System.out.println("3.- Crear ruta de directorios");
System.out.println("4.- Saber si un directorio existe");
System.out.println("5.- Borrar un directorio dado");
System.out.println("6.- Listar contenido de un directorio");
System.out.println("7.- Listar unidades");
System.out.println("8.- Salir");
System.out.println("Introduzca una opcion: ");
opcion = Integer.parseInt(teclado.readLine());

switch(opcion)
{
case 1:
System.out.println("Introduzca el nombre del directorio:");
String nombref = teclado.readLine();

//Uso del metodo isDirectory


File f = new File(nombref);
//El contenido de la variable cambiara a true si lo indicado es un directorio
if(f.isDirectory())
{
System.out.println("Es un directorio");
}
else
{
System.out.println("No es un directorio");
}
break;

case 2:
System.out.println("Introduzca el nombre del directorio:");
nombref = teclado.readLine();

//Uso del metodo mkdir


File f2 = new File(nombref);
if(f2.mkdir())
{
System.out.println("El directorio ha sido creado"); //Si la carpeta ha sido
creada nos devolverá un valor true, si el directorio ya
//estaba creado o no se pudo creado permanecerá
en false
}
else
{
System.out.println("El directorio no ha sido creado");
}
break;

case 3:
System.out.println("Introduzca el nombre del directorio:");
nombref = teclado.readLine();

//Uso del metodo mkdirs


File f3 = new File(nombref);
if(f3.mkdirs())
{
System.out.println("Directorios creados"); //Si el directorio o directorios no se
encuentran creados, los creará y cambiará la
//variable a true, si por cualquier motivo no se pudieron
crear el o los directorios
//la variable almacenará el valor false
}
else
{
System.out.println("Directorios no creados");
}
break;

case 4:
System.out.println("Introduzca el nombre del directorio:");
nombref = teclado.readLine();
//Uso del metodo exist
File f4 = new File(nombref);
if(f4.exists())
{
System.out.println("El directorio existe"); //Si el directorio indicado existe la
variable almacenará el valor true, si no almacenara
//el valor false
}
else
{
System.out.println("El directorio no existe");
}
break;

case 5:
System.out.println("Introduzca el nombre del directorio:");
nombref = teclado.readLine();

//Uso del metodo delete


File f5 = new File(nombref);
if(f5.delete())
{
System.out.println("El fichero fue borrado"); //Si el directorio a sido borrado
devolverá un valor true si no un valor false
}
else
{
System.out.println("El fichero fue creado");
}
break;

case 6:
System.out.println("Introduzca el nombre del directorio:");
nombref = teclado.readLine();

//Uso del metodo list


File f6 = new File(nombref);
File [] lista = f6.listFiles();

for(int i = 0;i<lista.length;i++)
{
if(lista[i].isDirectory()==true)
{
System.out.println(lista[i]+"Es directorio");//Dependiendo del resultado que
nos arroje el if (true o false)
//se nos indicará si lo incidado es un directorio o un
fichero
}
else
{
System.out.println(lista[i]+"Es un fichero");
}
}
break;

case 7:
//Uso del metodo listroot
File f7 = new File("");
File [] lista2 = f7.listRoots();

for(int i = 0;i<lista2.length;i++)
{
System.out.println(lista2[i]+" "); //Se almacena el listado de las unidades del
sistema en un array, luego para poder
//mostrar el contenido usaremos un bucle for
}
break;

case 8:
System.out.println("Fin del programa");
break;

default:
System.out.println("Opcion elegida no valida");
break;
}

}
catch(IOException e)
{
System.out.println("Fallo E/S");
}
catch(NumberFormatException e2)
{
System.out.println("Opcion escogida no valida");
}
}
while(opcion!=8);
}
}
2.- Realiza un programa donde utilices los métodos sobre ficheros isFile, exists, canRead,
canWrite, delete, length, lastModified , renameTo, getName, getAbsolutePath y getParent.

package ejerciciosficherossegundotrimestre;
import java.io.*;
import java.text.SimpleDateFormat;
/**
* Clase Ejercicio 2
*
* Esta clase contiene todos los metodos para trabajar con ficheros, isFile
* , exist, canRead, canWrite, delete, length, lastModified , renameTo, getName,
* , getAbsolutePath y getParent
*
*
* @author Jaime Solas Lara
*/
public class Ejercicio2 {
public static void main(String args[]){

/*
*Realiza un programa donde utilices los métodos sobre ficheros isFile, exists, canRead,
*canWrite, delete, length, lastModified , renameTo, getName, getAbsolutePath y
getParent
*/

InputStreamReader flujo = new InputStreamReader(System.in);


BufferedReader teclado = new BufferedReader(flujo);

int opcion = 0;
String nombref;

do
{
try
{
System.out.println("¿Que quieres hacer?");
System.out.println("1.- Obtener informacion de un fichero");
System.out.println("2.- Borrar un fichero");
System.out.println("3.- Renombrar un fichero");
System.out.println("4.- Salir del programa");
System.out.println("Introduzca una opcion: ");
opcion = Integer.parseInt(teclado.readLine());

switch(opcion)
{
case 1:

System.out.println("Introduzca el nombre del fichero:");


nombref = teclado.readLine();

System.out.println(infoFichero(nombref));//Llamamos al metodo para que nos


proporcione informacion de un fichero dado
break;
case 2:
System.out.println("Introduzca el nombre del fichero:");
nombref = teclado.readLine();

File f = new File(nombref);


if(f.delete())
{
System.out.println("El fichero ha sido borrado");//Si el fichero ha sido borrado
con existo entrá en esta condicion
}
else
{
System.out.println("El fichero no ha sido borrado");
}
break;
case 3:
System.out.println("Introduzca el nombre del fichero a renombrar");
String nombref1 = teclado.readLine();

System.out.println("Introduzca el nuevo nombre para el fichero");


String nombref2 = teclado.readLine();

File f1 = new File(nombref1);//En esta clase file indicamos el nombre del fichero
al que queremos cambiarle el nombre
File f2 = new File(nombref2);//En esta clase File indicacmo el nuevo nombre del
fichero

boolean correcto = f1.renameTo(f2);//Usamos el metodo para cambiarlo, al usar


el metodo nos devolverá true o false, el resultado se almacenará en una variable

if(correcto)//Dependiendo del resutlado de la variable entrará en la condicion


superior o inferior
{
System.out.println("El nombre ha sido cambiado correctamente");
}
else
{
System.out.println("El nombre no ha sido cambiado correctamente");
}
break;

case 4:
System.out.println("Fin del programa");

break;
default:
System.out.println("Opcion introducida no valida");

break;
}
}
catch(IOException e)//Controlamos los errores de E/S que se pudieran producir
{
System.out.println("Error E/S");
}
catch(NumberFormatException e2)//Si no se introduce una opcion numerica sino
cualquier otro tipo de expresion será controlado
{
System.out.println("Opcion introducida no valida");
}

}
while(opcion!=4);//Mientras la opcion dada sea distinta de 4 se seguirá ejecutando el
bucle

/**
* Metodo en el que se agrutina aquellos metodos que se pueden usar en un unico metodo,
para tener un mayor orden
* @return String
* @param nombref Nombre del fichero al que queremos sacarle la informacion
*
*/

public static String infoFichero(String nombref) //Le pasamos por parametro al metodo el
nombre del fichero
{
File f = new File(nombref);
String inf_fichero;
String error = "\nEl nombre introducido no es un fichero o no existe\n";

if((f.isFile())&&(f.exists())) //Solo en el caso que se cumpla ambas condiciones podremos


obtener la informacion del fichero
{
boolean plectura = f.canRead(); //Vamos obteniendo informacion referente al fichero
dado
boolean pescritura = f.canWrite();
long tamanio = f.length();

long ultima_mod = f.lastModified();


SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");//Debido a
que el formato que nos da el metodo lasModified no es el mas adecuado usamos la clase
SampleDateFormat para darselo

String nombre = f.getName();


String ruta_absoluta = f.getAbsolutePath();
String directorio_padre = f.getParent();

inf_fichero = "\nPermisos de lectura:"+plectura+"\nPermisos de


escritura:"+pescritura+"\nTamanio:"+tamanio+"\nUltima
modificacion:"+sdf.format(ultima_mod)+"\nNombre Fichero:"+nombre+"\nRuta
absoluta:"+ruta_absoluta+"\nDirectorio Padre:"+directorio_padre+"\n";//Usamos el metodo
format para aplicar el formato indicado anteriormente

return inf_fichero;//Devolvemos la cadena con la informacion del fichero


}
else
{
return error; //En el caso de que el nombre dado no sea de un fichero o no exista nos
devolverá una cadena con un mensaje de error
}

}
}

3. Crea un programa que lea un directorio, compruebe que existe, muestre si tiene permiso
de lectura y escritura y liste los ficheros y directorios que contiene.

package ejerciciosficherossegundotrimestre;
import java.io.*;
/**
* Clase Ejercicio 3
*
* Ejercicio que se nos pide que se haga un conjunto de acciones con los directorio
* leer un directorio, comprobar que existe, escritura, listar ficheros y directorios
* que contiene
*
* @author Jaime Solas Lara
*/
public class Ejercicio3 {
public static void main(String args[]){

/*
*Crea un programa que lea un directorio, compruebe que existe, muestre si tiene
permiso de
*lectura, escritura, liste los ficheros y directorios que contiene.
*/

InputStreamReader flujo = new InputStreamReader(System.in);


BufferedReader teclado = new BufferedReader(flujo);
String nombred;

try
{
System.out.println("Introduza nombre del directorio");
nombred = teclado.readLine();

System.out.println(infoDirectorio(nombred));
}
catch(IOException e)
{
System.out.println("Error E/S");
}
catch(Exception e2)
{
System.out.println("Error programa");
}
}

/**
* Metodo que obtiene la informacion de un directorio dado
* @param nombred nombred Nombre del directorio del que queremos sacar informacion
* @return String
*
*/
public static String infoDirectorio(String nombred)
{
File f = new File(nombred);
String info_directorio;
String error = "\nEl nombre introducido no es un directorio o no existe\n";

if((f.isDirectory())&&(f.exists()))
{
boolean plectura = f.canRead();
boolean pescritura = f.canWrite();
String listado="";

File [] lista = f.listFiles();//Cresmos un array y en el almacenamos el listado de ficheros

for(int i = 0;i<lista.length;i++)
{
if(lista[i].isDirectory()==true)//Dependiendo del resultado que nos arroje el if (true o
false)
//se nos indicará si lo incidado es un directorio o un fichero
{
listado = listado+"\n[D]"+lista[i];//Vamos almacenando el contenido de un array en
una variable string, (Concatenandolo)
}
else
{
listado = listado+"\n[F]"+lista[i];
}
}

return info_directorio ="Permisos de lectura:"+plectura+"\nPermisos de


escritura:"+pescritura+"\nContenido directorio:"+listado;//Mostramos los resultados
}
else
{
return error;
}
}
}
4.- Realiza un programa que guarde en un fichero (amigos.txt) los nombres guardados en un
array de String, cada nombre en una línea, para ello se graba en el fichero el retorno de carro
y la línea (“\r\n”) (“\r es el retorno de carro y \n el carácter de nueva línea). (utiliza las clases
FileWriter,y FileReader, BufferedReader.
Después, vuelve a abrir el fichero y realiza la lectura de los datos.

package ejerciciosficherossegundotrimestre;
import java.io.*;
/**
* Clase Ejercicio 4
*
* Ejercicio que se nos pide trabajar sobre un fichero agenda, escribir en el y leer
* su contenido
*
* @author Jaime Solas Lara
*/
public class Ejercicio4 {
public static void main (String args[]){

/*
Realiza un programa que guarde en un fichero (amigos.txt) los nombres guardados en un
array de String, cada nombre en una línea, para ello se graba en el fichero el retorno de
carro y
la línea (“\r\n”) (“\r es el retorno de carro y \n el carácter de nueva línea). (utiliza las
clases
FileWriter,y FileReader, BufferedReader.
Después, vuelve a abrir el fichero y realiza la lectura de los datos.
*/

InputStreamReader flujo = new InputStreamReader(System.in);


BufferedReader teclado = new BufferedReader(flujo);

String nombref;
int opcion=0;

do
{
try
{
System.out.println("¿Que quieres hacer?");
System.out.println("1.- Crear Fichero");
System.out.println("2.- Leer Fichero");
System.out.println("3.- Salir del programa");
System.out.println("Elegir Opcion:");
opcion = Integer.parseInt(teclado.readLine());

switch(opcion)
{
case 1:
System.out.println("Introduzca nombre del fichero");
nombref = teclado.readLine();
creaFichero(nombref);//Llamamos al metodo para crear el fichero
break;

case 2:
System.out.println("Introduzca nombre del fichero");
nombref = teclado.readLine();
leerFichero(nombref);//Llamamos al metodo para leer el fichero

break;

case 3:
System.out.println("Fin del programa");

break;

default:
System.out.println("Opcion elegida no valida");

break;
}
}
catch(IOException e)
{
System.out.println("Error E/S");
}
catch(NumberFormatException e2)
{
System.out.println("Opcion elegida no valida");
}
catch(Exception e3)
{
System.out.println("Error programa");
}
}
while(opcion!=3);
}

/**
* Este metodo es utilizado para crear un fichero y darle contenido
*
* @param nombref Nombre del fichero que queremos crear y añadir informacion
*/
public static void creaFichero(String nombref)
{

InputStreamReader flujo = new InputStreamReader(System.in);


BufferedReader teclado = new BufferedReader(flujo);

try
{
FileWriter fw = new FileWriter(nombref);
BufferedWriter bw = new BufferedWriter(fw);
System.out.println("Introduzca numero de nombres a guardar");
int numnombres = Integer.parseInt(teclado.readLine());

String nombre [] = new String [numnombres];

for(int i = 0;i<nombre.length;i++)//Recorremos el array para ir metiendo nombres


{
System.out.println("Introduzca el nombre del amigo "+(i+1)+":");
nombre[i]=teclado.readLine()+"\r\n";
bw.write(nombre[i]);//vamos escribiendo el nombre en el fichero
}
bw.close();
}
catch(IOException e)
{
System.out.println("Error E/S");
}
catch(Exception e2)
{
System.out.println("Error programa");
}
}

/**
* Metodo que muestra por pantalla el contenido de un fichero dado
*
* @param nombref Nombre del fichero que queremos leer
*/
public static void leerFichero(String nombref)
{
String texto = "";
int i = 0;
try
{
FileReader fr = new FileReader(nombref);
BufferedReader br = new BufferedReader(fr);

while(texto!=null)//Mientras la cadena de texto sea distinto de null se seguirá


ejecutando el while
{
texto = br.readLine();
if(texto!=null) //Nos servirá para poder eliminar los valores null que se puedan ir
generando durante la lectura de la variable
{
System.out.println(texto); //nos mostrará el contenido de la variable texto
}
}
br.close();
}
catch(FileNotFoundException e)
{
System.out.println("Fichero no encontrado");
}
catch(Exception e)
{
System.out.println("Error de programa");
}

}
}

5.- Realiza un programa que guarde en un fichero (amigos2.txt) el nombres y números de


teléfonos y la edad (entero), dados los datos desde teclado. Se finaliza cuando no se
introduce le nombre. Comprobar que se ha realizado correctamente realizando la lectura del
fichero anterior. (utiliza la clase StringTokenizer)

package ejerciciosficherossegundotrimestre;
import java.io.*;
import java.util.StringTokenizer;
/**
* Clase Ejercicio 5
*
* Ejercicio que se nos pide trabajar sobre un fichero agenda2, escribir en el y leer
* su contenido, similar al ejercicio 4
*
* @author Jaime Solas Lara
*/
public class Ejercicio5 {
public static void main(String args[]){

/*
Realiza un programa que guarde en un fichero (amigos2.txt) el nombres y
números de teléfonos y la edad (entero), dados los datos desde teclado.
Se finaliza cuando no se introduce le nombre. Comprobar que se ha
realizado correctamente realizando la lectura del fichero anterior.
(utiliza la clase StringTokenizer)
*/

InputStreamReader flujo = new InputStreamReader(System.in);


BufferedReader teclado = new BufferedReader(flujo);

String nombref;

try
{
System.out.println("¿Que quieres hacer?");
System.out.println("1.- Crear un fichero");
System.out.println("2.- Leer un fichero");
System.out.println("Opcion Elegida");
int opcion = Integer.parseInt(teclado.readLine());

switch(opcion)
{
case 1:
System.out.println("Introduzca nombre del fichero");
nombref = teclado.readLine();

crearFichero(nombref);
break;
case 2:
System.out.println("Introduzca nombre del fichero");
nombref = teclado.readLine();

leerFichero(nombref);
break;
default:
System.out.println("Opcion elegida no valida");
break;
}
}
catch(NumberFormatException e)
{
System.out.println("Opcion elegida no valida");
}
catch(IOException e1)
{
System.out.println("Error E/S");
}
catch(Exception e2)
{
System.out.println("Error del programa");
}
}

/**
* Este metodo es utilizado para crear un fichero y darle contenido
*
* @param nombref Nombre del fichero que queremos crear y añadir informacion
*/
public static void crearFichero(String nombref)
{
InputStreamReader flujo = new InputStreamReader(System.in);
BufferedReader teclado = new BufferedReader(flujo);

int i = 0;

try
{
FileOutputStream fos = new FileOutputStream(nombref);
DataOutputStream dos = new DataOutputStream(fos);//Como vamos a trabajar con
variables primitivas(INT) trabajaremos con este filtro

String nombre;
String telefono;
int edad;
System.out.println("Introduzca nombre del amigo "+(i+1));
nombre = teclado.readLine();
dos.writeUTF(nombre);

while(nombre.length()>0)//El bucle se seguirá ejecutando mientras el tamño de la


variable nombre sea mayor a 0
{
System.out.println("Introduzca telefono del amigo "+(i+1));
telefono = teclado.readLine();
dos.writeUTF(telefono);//A la vez que se introduce la informacion, esta se graba en el
fichero

System.out.println("Introduzca la edad del amigo "+(i+1));


edad = Integer.parseInt(teclado.readLine());
dos.writeInt(edad);

i++;

System.out.println("Introduzca nombre del amigo "+(i+1));


nombre = teclado.readLine();
dos.writeUTF(nombre);
}

if(dos!=null)//cerrado de filtro y flujo


{
dos.close();
fos.close();
}

}
catch(IOException e)//control de excepciones
{
System.out.println("Error E/S");
}
catch(Exception e)
{
System.out.println("Error programa");
}

/**
* Metodo que muestra por pantalla el contenido de un fichero dado
*
* @param nombref Nombre del fichero que queremos leer
*/
public static void leerFichero(String nombref)
{
try
{
File f = null;
FileInputStream fis = null;
DataInputStream dis = null;

try
{
f = new File(nombref);//Creamos el fichero

if(f.exists())//Si existe el fichero se instanciaran cla clase file y data


{
fis = new FileInputStream(f);
dis = new DataInputStream(fis);

while(true)//Minetras el bucle valga true se ejecutará el interior del mismo,


(Lectura del archivo)
{
String nombre = dis.readUTF();
String telefono = dis.readUTF();
int edad = dis.readInt();

StringTokenizer token = new StringTokenizer(nombre+" "+telefono+"


"+edad);//Usaremos esta clase para poder "romper" o "separar", nuestra cadena, en este caso
en tres pastes nombre,telefono y edad
while(token.hasMoreTokens())//Se ejecutará mientras existan mas token que
mostrar
{
System.out.println(token.nextToken());//Se van imprimiendo los tokens uno a
uno
}
}
}
}
catch(EOFException e)//Por aquí terminará la letura del fichero dado
{
System.out.println("Fin de archivo");
}
catch(FileNotFoundException e)
{
System.out.println("Fichero no encontrado");
}
catch(IOException e)
{
e.printStackTrace();
}
catch(Throwable e)
{
System.out.println("Error del programa"+e);
}
finally//El finally siempre se va a cumplir, por lo tanto siempre haremos que se cierre el
filtro y el flujo
{
if(dis !=null)
{
dis.close();
fis.close();
}
}
}
catch(Exception e)
{
System.out.println("Error");
}
}
}

6. Realiza un programa cuenta.java que contenga un método cuentaPalabra() que cuente las
palabras existentes en un archivo de datos pasado como parámetro

package ejerciciosficherossegundotrimestre;
import java.io.*;
import java.util.*;
/**
* Clase Ejercicio 6
*
* Esta clase contiene un metodo para contar palabras
*
* @author Jaime Solas Lara
*/
public class Ejercicio6 {
public static void main(String args[]){

/*
* Realiza un programa cuenta.java que contenga un método
* cuentaPalabra() que cuente las palabras existentes en
* un archivo de datos pasado como parámetro
*/

Scanner sc = new Scanner(System.in);

System.out.println("Introduzca un fichero un texto para contar las palabras");


String nombre = sc.nextLine();

System.out.println(cuentaPalabras(nombre));

/**
* Metodo utilizado para contar las palabras de un fichero dado
*
* @param nombref Indicamos el nombre del fichero que queremos contar las palabras
* @return int
*/
public static int cuentaPalabras(String nombref)
{
int npalabras = 0;//Inicializamos la variable a 0 para poder contar las palabras
try
{
Scanner sc = new Scanner(new File(nombref));//Le pasamos como argumento a la clase
escaner una clase file,
//el fichero que se genere será leido por la case escaner
while(sc.hasNextLine())//Mientras existan lineas se ejecutará el bucle
{
sc.next();//Irá leyendo palabra por palabra
npalabras++; //Cada vez que se ejecute el bucle el contador sumará 1, npalabras=1 ==
1 palabra,npalabras=2 == 2 palabras, etc...
}
return npalabras;//Resultado se muestra en el contador
}
catch(FileNotFoundException e)//Con este catch controlamos la excepcion
{
npalabras = 0;
return npalabras;//Si por lo contrario existe un error el valor que devolvera el metodo
sera 0
}
}

7.-Se necesita crear una censura con un método aplicaCensura que modifique ciertas
palabras de un fichero. El método toma un fichero de entrada y mediante un fichero de
censura creará un fichero de salida con las modificaciones necesarias.
Fichero de entrada
En un lugar de la mancha de cuyo nombre no quiero acordarme…
Vivía un hidalgo de adarga estrecha.
Fichero de censura
acordarme recordar
hidalgo noble
Fichero de salida
En un lugar de la mancha de cuyo nombre no quiero recordar….
Vivía un noble adarga estrecha

package ejerciciosficherossegundotrimestre;
import java.io.*;

/**
* Clase Ejercicio 7
*
* Contiene los metodos para aplicar censura sobre un fichero leido
*
* @author Jaime Solas Lara
*/
public class Ejercicio7 {
public static void main(String args[]){

/*
* Se necesita crear una censura con un método aplicaCensura que modifique ciertas
palabras de un fichero.
* El método toma un fichero de entrada y mediante un fichero de censura creará un
fichero de salida con las
* modificaciones necesarias.
*
* - Fichero de entrada:
* En un lugar de la mancha de cuyo nombre no quiero acordarme...
* Vivía un hidalgo de adarga estrecha.
*
* - Fichero de censura:
* acordarme recordar
* hidalgo noble
*
* - Fichero de salida:
* En un lugar de la mancha de cuyo nombre no quiero recordar...
* Vivía un noble adarga estrecha
*/

String nombref = "C:\\Users\\jaime\\Desktop\\censurar.txt";


leerFichero(nombref);
}

/**
* Metodo que muestra por pantalla el contenido de un fichero dado
*
* @param nombref Nombre del fichero que queremos leer
*/
public static void leerFichero(String nombref)
{
String texto = "";
int i = 0;
try
{
FileReader fr = new FileReader(nombref);
BufferedReader br = new BufferedReader(fr);

while(texto!=null)//Mientras la cadena de texto sea distinto de null se seguirá


ejecutando el while
{
texto = br.readLine();

if(texto!=null) //Nos servirá para poder eliminar los valores null que se puedan ir
generando durante la lectura de la variable
{
System.out.println(censura(texto)); //nos mostrará el contenido de la varible texto
que ha sido censurado utilizando el metodo censurar
}
}
br.close();
}
catch(FileNotFoundException e)
{
System.out.println("Fichero no encontrado");
}
catch(Exception e)
{
System.out.println("Error de programa");
}

/**
* Metodo que aplica una censura a un fichiro indicado
*
* @param fichcensurar Indicamos el fichero al que queremos aplicarle la censura
* @return String
*/
public static String censura(String fichcensurar)//Introducimos la string que almacena la
información a censurar
{
String censura = " ";//En esta cadena almacenaremos el contenido del archivo qu
usaremos para censurara

try
{
FileReader frc = new
FileReader("C:\\Users\\jaime\\Desktop\\fichcensura.txt");//Creamos filtro
BufferedReader brc = new BufferedReader(frc);//Creamos flujo

censura = brc.readLine();//Almacenamos contenido del archio de censura


int pos = censura.indexOf(" ");//Usaremos esta variable para obtener la cadena a
intercambiar

String censura1 = censura.substring(0,pos);//Obtenemos la cadena de la primera


palabra para cambiar
String censura2 = censura.substring(pos+1, censura.length());//Obtenemos la cadena de
la segunda palabra para cambiar

fichcensurar = fichcensurar.replaceAll("acordarme", censura1);//Sustituimos una


palabra por otra
fichcensurar = fichcensurar.replaceAll("hidalgo", censura2);//Sustituimos la otra palabra
por otra
}
catch(FileNotFoundException e)
{
System.out.println("Fichero no encontrado");
}
catch(Exception e)
{
System.out.println("Error de programa");
}

return fichcensurar;//Devolvemos el contenido del fichero ya censurado


}
}

8.- Modifica el ejercicio anterior para que el fichero de salida sea el fichero de entrada.

package ejerciciosficherossegundotrimestre;
import java.io.*;
/**
* Clase Ejercicio 8
*
* Modificacion del ejercicio 8
*
* @author Jaime Solas Lara
*/
public class Ejercicio8 {
public static void main(String args[]){

/*
*Modifica el ejercicio anterior para que el fichero de salida sea el fichero de entrada.
*/

String nombref = "C:\\Users\\jaime\\Desktop\\censurar2.txt";


leerFichero(nombref);
}

/**
* Metodo que muestra por pantalla el contenido de un fichero dado
*
* @param nombref Nombre del fichero que queremos leer
*/
public static void leerFichero(String nombref)
{
String texto = "";
int i = 0;
try
{
FileReader fr = new FileReader(nombref);
BufferedReader br = new BufferedReader(fr);

while(texto!=null)//Mientras la cadena de texto sea distinto de null se seguirá


ejecutando el while
{
texto = br.readLine();

if(texto!=null) //Nos servirá para poder eliminar los valores null que se puedan ir
generando durante la lectura de la variable
{
System.out.println(censura(texto)); //nos mostrará el contenido de la varible texto
que ha sido censurado utilizando el metodo censurar
}
}
br.close();
}
catch(FileNotFoundException e)
{
System.out.println("Fichero no encontrado");
}
catch(Exception e)
{
System.out.println("Error de programa");
}

/**
* Metodo que aplica una censura a un fichiro indicado
*
* @param fichcensurar Indicamos el fichero al que queremos aplicarle la censura
* @return String
*/
public static String censura(String fichcensurar)//Introducimos la string que almacena la
información a censurar
{
String censura = " ";//En esta cadena almacenaremos el contenido del archivo qu
usaremos para censurara

try
{
FileReader frc = new
FileReader("C:\\Users\\jaime\\Desktop\\fichcensura2.txt");//Creamos filtro
BufferedReader brc = new BufferedReader(frc);//Creamos flujo

censura = brc.readLine();//Almacenamos contenido del archio de censura


int pos = censura.indexOf(" ");//Usaremos esta variable para obtener la cadena a
intercambiar

String censura1 = censura.substring(0,pos);//Obtenemos la cadena de la primera


palabra para cambiar
String censura2 = censura.substring(pos+1, censura.length());//Obtenemos la cadena de
la segunda palabra para cambiar

fichcensurar = fichcensurar.replaceAll("recordar", censura1);//Sustituimos una palabra


por otra
fichcensurar = fichcensurar.replaceAll("noble", censura2);//Sustituimos la otra palabra
por otra
}
catch(FileNotFoundException e)
{
System.out.println("Fichero no encontrado");
}
catch(Exception e)
{
System.out.println("Error de programa");
}

return fichcensurar;//Devolvemos el contenido del fichero ya censurado

}
}

9.- Tenemos un fichero con una serie de números los cuales queremos ordenar de manera
ascendente. El objetivo es que los números queden ordenados en el mimo fichero. Para la
resolución del problema crea una clase orden con un método ordena que haga la ordenación
de los datos del fichero. Los números están cada uno en una línea del fichero y el fichero
cuenta con al menos 5 números.
La solución que se la ha dado al problema se ubica en el método ordenar y consta de tres
fases:
Lectura de los datos del fichero en un String → Ordenación del String →Escritura del String
en el fichero.

package ejerciciosficherossegundotrimestre.Ejercicio9;
import java.io.*;
/**
* Clase Ordenar
*
* Esta clase es utilizada para ordenar numeros dentro de un fichero dado
*
* @author Jaime Solas Lara
*/
public class Ordenar {

/**
* Metodo que se utiliza para ordenar numeros dentro de un fichero dado
*
* @param nombref Indicamos el nombre del fichero que contiene los numeros a ordenar
*/
public static void ordenar(String nombref)
{
//Leemos el fichero con los numeros a ordenar
String numeros = "";
String resultado = "";
try
{
FileReader fr = new FileReader(nombref);
BufferedReader br = new BufferedReader(fr);

while(numeros!=null)//Mientras la cadena de texto sea distinto de null se seguirá


ejecutando el while
{
numeros = br.readLine();

if(numeros!=null) //Nos servirá para poder eliminar los valores null que se puedan ir
generando durante la lectura de la variable
{
resultado = resultado + numeros; //Almacenaremos el contenido en una variable
para despues ordenarlos
}
}
br.close();

//Ordenamos los numeros del fichero


int tamanio = resultado.length();//Obtendremos el tamanio del string donde se
almacenan los numeros
int listaNum[] = new int[tamanio];//Se creará un array de int para almacenar los valores,
tenemos que indicarle el tamanio para evitar los nulos

for(int i = 0;i<resultado.length();i++)//Recorremos el array de enteros para almacenar


los valores
{
listaNum[i]=Integer.parseInt(resultado);//Usaremos una clase Integer para
transformar los valores String a numeros y almacenarlos en nuestro array de enteros
}

for(int i=0;i<listaNum.length;i++)//Por ultimo procederemos a ordenar el array de


enteros con el metodo de intercambio
{
for(int j = i+1;j<listaNum.length;j++)
{
if(listaNum[i]>listaNum[j])
{
int aux;
aux = listaNum[j];
listaNum[j] = listaNum[i];
listaNum[i] = aux;
}
}
}

//Escribimos los resultados en el fichero


FileWriter fw = new FileWriter("C:\\Users\\jaime\\Desktop\\numeros2.txt");
BufferedWriter bw = new BufferedWriter(fw);

for(int k = 0;k<listaNum.length;k++)//Recorremos el array donde se almacenan los


numeros ya ordenados
{
bw.write(listaNum[k]);//Se va escribiendo en el fichero cada numero linea por linea
hasta que finalice el recorrido del bucle sobre el array
bw.newLine();
}
bw.close();

}
catch(FileNotFoundException e)
{
System.out.println("Fichero no encontrado");
}
catch(Exception e)
{
System.out.println("Error de programa");
}
}
}

Anda mungkin juga menyukai