UNIVERSIDAD DE PANAMÁ CENTRO REGIONAL UNIVERSITARIO DE VERAGUAS FACULTAD DE INFORMÁTICA, ELECTRÓNICA Y COMUNICACIÓN ESCUELA DE INGENIERÍA EN INFORMÁTICA CARRERA: LICENCIATURA DE INGENIERÍA EN INFORMÁTICA
PROGRAMACIÓN III PROGRAMACIÓN ORIENTADA A OBJETOS
LABORATORIO 4 DIRECTORIOS, SUBDIRECTORIOS Y ARCHIVOS
PRESENTADO POR LOS ESTUDIANTES: EUFEMIA, BUITRAGO 2-719-2461 FÉLIX, RIVERA 9-727-620
PROFESOR: DIEGO SANTIMATEO
II SEMESTRE III AÑO
FECHA DE ENTREGA: JUEVES, 23 DE OCTUBRE DE 2008.
ÍNDICE INTRODUCCIÓN……………………………………………………………………….
i
OBJETIVOS……………………………………………………………………………..
ii
CONTENIDO…………………………………………………………………………….
iii
Descripción de los requisitos del programa…………………………….. 1 Código de la Clase Principal………………………………………………... 2 Descripción de las Clases, Métodos y Objetos de la Clase Principal………………………………………………………………… 4 Código de la Clase donde se crean los dos directorios………………. 5 Descripción de las Clases, Métodos y Objetos de la Clase donde se crean los dos directorios……………………………….. 6 Código donde se crea el archivo base y el código para Modificarlo……………………………………………………………………… 7 Descripción de las Clases, Métodos y Objetos de la Clase donde se crea el archivo base y el archivo para Modificarlo……………………………………………………………………… 11 Código de la Clase donde se resuelve cada caso del
menú para la Modificación del Archivo…………………………………… 15 Descripción de las Clases, Métodos y Objetos de la Clase donde se resuelve cada caso del menú y la Modificación del archivo…………………………………………………….. 23 Reflexión Personal sobre el Proyecto…………………………………….. 25 Resultados de la Ejecución del Programa……………………………….. 26 CONCLUSIONES………………………………………………………………………. iv BIBLIOGRAFÍAS………………………………………………………………………. v
i
INTRODUCCIÓN
Debido a que Java es un lenguaje rico en recursos para manejar estructuras de datos, lo cual a nivel superficial se ha podido experimentar con las diversas clases y métodos de manejo de archivos, él mismo puede a su ves almacenar y leer diferentes tipos de información de archivos tales como binarios, objetos java, texto, comprimidos, etc. Java nos ofrece la clase FILE que permite crear instancias asociadas con el nombre de un archivo, no con su contenido, facilitando el manejo de directorios y de archivos en los subdirectorios, cambiar nombres, verificar existencia de archivos, etc.
ii
OBJETIVO GENERAL
Construir una aplicación Java que verifique si el archivo se esta creando en su directorio y si el nombre del archivo no existe en el directorio.
iii
CONTENIDO
1
DESCRPCIÓN DE LOS REQUISITOS DEL PROGRAMA Se desea construir una aplicación Java, lo que significa que deben diseñarse las clases necesarias para resolver el problema, recuerde que el main() solo controla la ejecución. La aplicación debe permitir la creación de un documento HTML dentro de una carpeta que esta contenida en otra. Los nombres de los directorios y del documento deben ser capturados desde el teclado. Se debe permitir la modificación de los contenidos de los elementos titulo, p, li, h1, h2 y la posibilidad de incluir hr dentro de un párrafo, los li y los p se pueden discriminar usando un identificador id o name. No es necesario que los párrafos sean muy extensos. La aplicación debe verificar si el archivo se esta creando en un subdirectorio y si el nombre del archivo no existe en el directorio.
//CLASE PRINCIPAL - MAIN
2
import java.io.*; import javax.swing.*; class CreaWeb { public static void main(String[] args)throws IOException { String selec; int seleccion; pagina web = new pagina(); //web es un objeto que se crea en la clase pagina directorio guar = new directorio(); //guar es el objeto q se crea en la clase directorio tipo modifica = new tipo(); try{ do { selec = JOptionPane.showInputDialog(null,"Marque 1 para crear dos directorios \n Marque 2 para crear un archivo html \n Marque 3 para modificar \n Marque 4 para salir",JOptionPane.QUESTION_MESSAGE); seleccion = Integer.parseInt(selec); switch(seleccion) { case 1: guar.direct(); break; case 2: web.guarda(); break; case 3: web.modificar(); break; case 4: JOptionPane.showMessageDialog(null," Hasta Pronto"); break; default: JOptionPane.showMessageDialog(null,"Esta opcion no està disponible"); }
3
}while(seleccion!=4); } catch(Exception e){ JOptionPane.showMessageDialog(null," ****Error en la captura****");} } }
DESCRIPCIÓN DE LAS CLASES, MÉTODOS Y OBJETO DE LA CLASE class CreaWeb
4
CLASE 1 - CLASE PRINCIPAL-Main() NOMBRE DE LA CLASE: MODIFICADORES DE ACCESO: FUNCIÓN DE LA CLASE:
CLASES
CreaWeb public Clase donde se crea el menú principal con todas las funciones que va a realizar el programa, desde esta clase se llama al resto de las mismas
FUNCIÓN
MÉTODOS
pagina
Es donde se crea el objeto web
directorio
Es donde se crea el objeto guar
guarda()
tipo
Es donde se crea el objeto modifica
modificar()
direct()
FUNCIÓN
Método (invocado) del objeto web de tipo guar en la clase directorio Método (invocado) del objeto guar de tipo web en la clase directorio de tipo pagina Método (invocado) del objeto modifica de tipo web de la clase tipo de tipo pagina
//CLASE DONDE SE CREAN LOS 2 DIRECTORIOS import java.io.*; import javax.swing.*; import java.io.File; public class directorio
OBJETOS
FUNCIÓN
web
Creado en la clase pagina
guar
Creado en la clase directorio
modifica
Creado en la clase tipo
5
{ //************************************************************** ****************************** public void direct()throws IOException { String direct1,direct2; direct1 = JOptionPane.showInputDialog("Nombre de la carpeta #1:"); boolean success = (new File(direct1)).mkdirs(); JOptionPane.showMessageDialog(null,"Al crear el subdirectorio debe colocar dos slach '//'despues del primer directorio creado"); direct2 = JOptionPane.showInputDialog("Nombre de la carpeta #2:"); success = (new File(direct2)).mkdirs(); } //************************************************************** ****************************** public void BorrarFichero(String capt_ruta,String archi)throws IOException { String sFichero = (archi); File f = new File(sFichero); if (f.delete()) JOptionPane.showMessageDialog(null,"Su cambio se ha guardado"); else JOptionPane.showMessageDialog(null,"Su cambio se ha guardado"); File file = new File("1\\2\\cambio.html"); file.renameTo(new File(archi)); } } //************************************************************** ****************************** DESCRIPCIÓN DE LAS CLASES, MÉTODOS Y OBJETO DE LA
6
CLASE 2 NOMBRE DE LA CLASE: MODIFICADORES DE ACCESO: FUNCIÓN DE LA CLASE: CLASES
String
File
directorio public Clase que fue llamada desde el main() al introducir la opción 1 para la creación de los archivos
FUNCIÓN
Clase utilizada para la cadena de caracteres
Clase de tipo directorio utilizada para la creación del objeto f
MÉTODOS
FUNCIÓN
direct()
Método del objeto guar
File()
Método utilizado para realizar la creación de las carpetas
BorrarFichero()
Delete()
Método utilizado para realizar los procesos necesarios para borrar archivos Método utilizado para borrar el archivo
OBJETOS
FUNCIÓN
file
Creado en la clase File de tipo directorio para reemplazar al archivo existente con el nuevo nombre
f
Nombre que lleva el archivo que deseo borrar
//CLASE DONDE SE CREA EL ARCHIVO BASE Y EL MENU PARA MODIFICARLO import java.io.*; import javax.swing.*; public class pagina {
7
tipo modifica = new tipo(); String opcion,archi,r,ruta,archivoName,capt_ruta; int op; InputStreamReader isr=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(isr); //************************************************************** ******************************* public String modificar()throws IOException { String ver=JOptionPane.showInputDialog(“Antes de modificar presine ‘v’ para verificar si el archivo a modificar existe”); if(“v”.equals(ver)) { capt_ruta=verificar(ruta,archivoName); if(r==”a”) { do { 7xtens = JoptionPane.showInputDialog(null,”Marque 1 si desea modificar el encabezado de la web…\nMarque 2 si desea modificar el titulo de la web…\nMarque 3 si desea modificar los 7xtensió de la web… \nMarque 4 si desea modificar 7xten articulo de la web…\nMarque 5 para salir”,JoptionPane.QUESTION_MESSAGE); op = Integer.parseInt(opcion); switch(op) { case 1: modifica.encabezado(capt_ruta,archi); break; case 2: modifica.titulo(capt_ruta,archi); break;
8
case 3: modifica.parrafo(capt_ruta,archi); break; case 4: modifica.articulo(capt_ruta,archi); break; case 5: break; default: JoptionPane.showMessageDialog(null,”Opcion Incorrecta”); } }while(op!=5); } } else { JoptionPane.showMessageDialog(null,”No se puede verificar si existe”); } return(ruta); }
//************************************************************** ******************************* public String verificar(String ruta,String archivoName)throws IOException { ruta = JoptionPane.showInputDialog(null, “Indique solo la ruta del archivo que va a modificar:”); archivoName = JoptionPane.showInputDialog(null, “Indique el nombre y 8xtensión del archivo que va a modificar:”);
9
archi=ruta.concat(“\\”+archivoName); // JoptionPane.showMessageDialog(null,”esta es la ruta”+ruta); File archivoabuscar = new File(archi); if(archivoabuscar.exists()) { JoptionPane.showMessageDialog(null,” El 9xtensi existe”); r=”a”; } else { JoptionPane.showMessageDialog(null,”Disculpe…El archivo ‘NO’ existe o la ruta es incorrecta\n Vuelva a intertarlo”); r=”b”; } return(ruta); } //************************************************************** ******************************* public void guarda()throws IOException { String resul; JoptionPane.showMessageDialog(null,”Recuerde que la 9xtensión del archivo es .html”); resul=JoptionPane.showInputDialog(“Indique la ruta, luego el nombre y 9xtensión del archivo a guardar:”); File salida = new File(resul); PrintWriter out = new PrintWriter(salida);
//
out.println(“”); out.println(“”); out.println(“
”); out.println(“”); out.println(“”); out.println(“
”); out.write(“
”);
10
out.println(“
”); out.println(“”); out.close(); JoptionPane.showMessageDialog(null,” La estructura de la Web ha sido creada”); } }
DESCRIPCIÓN DE LAS CLASES, MÉTODOS Y OBJETO DE LA CLASE 3 NOMBRE DE LA CLASE: MODIFICADORES DE ACCESO: FUNCIÓN DE LA CLASE: CLASES
Pagina public Clase que fue llamada desde el main() al introducir la opción 2 para la creación del archivo base y el menú para modificarlo FUNCIÓN
MÉTODOS
FUNCIÓN
OBJETOS
FUNCIÓN
11
modificar()
InputStreamReader
Convierte el objeto System.in al objeto isr para utilizar los métodos de la clase Reader que puede leer caracteres
equals()
verificar()
Método del objeto modifica de tipo web de la clase tipo de tipo pagina Método creado en la clase pagina para verificar la existenci a del archivo Método creado en la clase pagina para la verificaci ón de la existenci a del archivo y la ruta del mismo
modifica
Objeto de tipo web de la clase tipo de tipo pagina
isr
Creaso en la clase InputStream Reader de tipo pagina para obtener los caracteres sueltos
System.in
Objeto que es reemplazad o por isr
12
encabezado()
titulo()
BufferedReader Clase de tipo directorio utilizada para la creación del objeto f
Método del objeto modifica que esta en la clase tipo de tipo pagina para la modifica ción del encabez ado de la pagina web Método del objeto modificar que esta en la clase tipo de tipo pagina para la modifica ción del título de la página web Método del objeto modifica que esta en la clase tipo de tipo
br
archivoab uscar
Creado en la clase BufferedRe ader de tipo pagina
Creado en el método modificar en la clase File de tipo pagina para realizar la búsqueda del archivo deseado
Creado en
13
articulo()
File
Clase que crea el objeto archivo a buscar para poder realizar la búsqueda del archivo deseado
guarda()
Método del objeto modifica que esta en la clase tipo de tipo pagina para la modifica ción del/los artículos Método de la clase directorio de tipo pagina encargad o de guardar la ruta, nombre y extensió n del mismo
14
//CLASE DONDE SE RESULVE CADA CASO DEL MENU PARA LA MODIFICACION DEL ARCHIVO import java.io.*; import java.util.*; import javax.swing.*; public class tipo { String div_parraf,archi,co,conca,modif,id; InputStreamReader isr=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(isr); directorio borra = new directorio(); //************************************************************** ******************************* public String encabezado(String capt_ruta,String archi)throws IOException { String tit_etiq; FileReader arch1 = new FileReader(archi); BufferedReader in = new BufferedReader(arch1); File salida = new File("1\\2\\cambio.html"); PrintWriter out = new PrintWriter(salida);
15
String s = new String(); while((s = in.readLine())!= null)
//lectura del
archivo { int val = s.indexOf("
"); if(val>=0) { JOptionPane.showMessageDialog(null,"Modifique el Encabezado"); tit_etiq = JOptionPane.showInputDialog("Ingrese el Nuevo Titulo del Encabezado"); out.println(""+tit_etiq+""); } else out.println(s); } in.close(); out.close(); borra.BorrarFichero(capt_ruta,archi); borrar el archivo return(capt_ruta); }
//se va a
//************************************************************** ******************************* public String titulo(String capt_ruta,String archi)throws IOException { String tit_pag; FileReader arch1 = new FileReader(archi); BufferedReader in = new BufferedReader(arch1); File salida = new File("1\\2\\cambio.html"); PrintWriter out = new PrintWriter(salida);
16
String s = new String(); while((s = in.readLine())!= null) { int val = s.indexOf(""); if(val>=0) { JOptionPane.showMessageDialog(null,"Modifique el Titulo"); tit_pag = JOptionPane.showInputDialog("Ingrese el Titulo de la Pagina"); out.println(""+tit_pag+"
"); } else out.println(s); } in.close(); out.close(); borra.BorrarFichero(capt_ruta,archi); return(capt_ruta); } //************************************************************** ******************************* public String parrafo(String capt_ruta,String archi)throws IOException { String contenido,op_parra,t; FileReader arch1 = new FileReader(archi); BufferedReader in = new BufferedReader(arch1); File salida = new File("1\\2\\cambio.html"); PrintWriter out = new PrintWriter(salida); String s = new String(); JOptionPane.showMessageDialog(null,"Modifique Parrafo");
17
op_parra = JOptionPane.showInputDialog("Marque 'w' si desea agregar parrafo...\nMarque 'e' si desea modificar algun parrafo..."); if(op_parra.equals("w")) { while((s = in.readLine())!= null) { int val = s.indexOf("
"); if(val>=0) { out.println(s); do { id = JOptionPane.showInputDialog("Ingrese el identificador con enumeracion"); contenido = JOptionPane.showInputDialog("Ingrese el contenido informativo de la web"); out.println(""+contenido+"
"); t = JOptionPane.showInputDialog("Marque 'T' si va a agregar mas parrafos"); }while(t.equals("t")); } else out.println(s); } } else modif_parra(capt_ruta,archi); in.close(); out.close(); borra.BorrarFichero(capt_ruta,archi); return(capt_ruta); } //-------------------------------------------------------------------------------------------
18
public String modif_parra(String capt_ruta,String archi)throws IOException { FileReader arch1 = new FileReader(archi); BufferedReader in = new BufferedReader(arch1); File salida = new File("1\\2\\cambio.html"); PrintWriter out = new PrintWriter(salida); String real = JOptionPane.showInputDialog("Si realmente desea modificar un parrafo marque 'D'..."); if(real.equals("d")) { modif = JOptionPane.showInputDialog("Ingrese el identificador del parrafo a modificar"); String s = new String(); while((s = in.readLine())!= null) { int val = s.indexOf(""+cambia_contenido+"
"); } else out.println(s); } } else { String y = new String(); while((y = in.readLine())!= null) out.println(y); } in.close(); out.close(); borra.BorrarFichero(capt_ruta,archi); return(capt_ruta);
19
} //************************************************************** ******************************* public String articulo(String capt_ruta,String archi)throws IOException { String lis,list1,t,op_art; FileReader arch1 = new FileReader(archi); BufferedReader in = new BufferedReader(arch1); File salida = new File("1\\2\\cambio.html"); PrintWriter out = new PrintWriter(salida); JOptionPane.showMessageDialog(null,"Modifique los Articulos"); String s = new String(); op_art = JOptionPane.showInputDialog("Marque 'w' si desea agregar articulos...\nMarque 'e' si desea modificar algun articulo..."); if(op_art.equals("w")) { while((s = in.readLine())!= null) { int val = s.indexOf(""); if(val>=0) { do { lis = JOptionPane.showInputDialog("Ingrese el identificador de un articulo con numeracion"); list1 = JOptionPane.showInputDialog("Ingrese la lista"); out.println(""+list1); t = JOptionPane.showInputDialog("Marque 'T' si va a agregar mas parrafos"); }while(t.equals("t")); out.println("