Está en la página 1de 32

UNIVERSIDAD DE PANAMÁ

CENTRO REGIONAL UNIVERSITARIO DE VERAGUAS

FACULTAD DE INFORMÁTICA ELECTRÓNICA Y COMUNICACIÓN


(FIEC)

INF.222

PROGRAMACIÓN ORIENTADA A OBJETOS

PROYECTO #1

“DIRECTORIOS, SUBDIRECTORIOS Y ARCHIVOS”

PROFESOR

DIEGO SANTIMATEO

ESTUDIANTE

ÁNGEL AGUILAR 8-821-2269

MARÍA GONZALEZ 2-721-522

II AÑO

II SEMESTRE

2008
INTRODUCCIÓN

Otra experiencia mas que tiene como objetivo seguir en la modularización de la programación, en
esta ocasión en el tema de directorios, subdirectorios y archivos, se puede decir en el caso
específico de los archivos que es una estructura de datos que facilita el almacenamiento de datos de
distintos tipos, es por ello que a la hora de trabajar con esas estructuras, en programación orientada
a objetos, implica que se pueden hacer muchas cosas con los archivos, es decir, como lo que pide
este laboratorio, crear un archivo, modificar, eliminar, abrir entre otras. Además como es una
estructura bastante compleja requiere de la utilización de muchos métodos y clases o cual hace más
sencillo aún sus códigos en el sentido de que son segmentos pequeños destinados a hacer una sola
tarea en especial.
COMENTARIO DE DESPUES DE LEER E INTERPRETAR LA DIRECCIÓN

http://www.leepoint.net/notes-java/io/10file/10readfile.html

Después de revisar la dirección se puede decir que se dan a conocer algunas clases y métodos para
trabajar con archivos, por supuesto que nos pareció interesante porque básicamente este pequeño tutorial
trata de ejemplificar el uso de algunas clases, para poder hacer una copia de un archivo entre otras, se podrí
decir que se sienta la bases para satisfacer los requerimientos del proyecto, ya que por nuestra parte nos
corresponde investigar mas aún de lo que presenta el facilitador.

DOCUMENTACIÓN ADECUADA DE LAS CLASES Y MÉTODOS

En este programa se utilizó una gran cantidad de métodos y algunas clases de las cuales se estarán
explicando su funcionalidad poco a poco.

CLASES FUNCIONALIDAD
Clase Principal En esta clase es la que se encuentra el
main, lo que significa que es donde se con-
trolan o se llaman todos los métodos exis-
tentes sin importar las cantidades de clases
empleadas.
Clase Directorio Por su parte esta clase contiene los méto-
dos relacionados con la creación de la ruta
en la que se encuentra el archivo, que in-
cluye la creación de la carpeta principal, la
subcarpeta y el propio archivo, además de
los métodos para verificar la existencia de
cada uno de los nombres de la ruta.
Clase Html En esta clase se encuentran el métodos que
se encarga de la creación del esqueleto del
archivo.
Clase Modifica A esta clase pertenecen los métodos que
permiten modificar el archivo, ya sea su ti-
tulo, subtitulo, párrafo y subpárrafos.
MÉTODOS FUNCIONALIDAD
Clase Principal
Esta clase no contiene métodos Por su parte en ella es donde se puede ha-
cer la ejecución del programa (donde se
encuentra el menú), y se hace la invoca-
ción de cada uno de los métodos de las cla-
ses que se definen a continuación.
Clase Directorio
Carpeta Obtiene el nombre de la carpeta principal
desde teclado.
Carpeta2 Se obtiene el nombre de la subcarpeta tam-
bién desde teclado.
Archivo Aquí se captura por el teclado el nombre
del archivo.
Vercar En este método se verifica si la carpeta
principal que se desea crear existe o no.
Vercarr En este método se verifica si la subcarpeta
que se desea crear dentro de la carpeta
principal existe o no.
Verarch En este método se verifica si el archivo
que se desea crear dentro de la subcarpeta
existe o no.
Clase Html
Esqueleto En este método lo que se hace es crear las
etiquetas HTML en el archivo recién crea-
do para luego modificarlo.
Clase Modifica
ModTitulo La función de este método consiste en la
creación del titulo del archivo HTML, ade-
más se puede cambiar el titulo las veces
que se desee, en ella se pide un nombre de
un nuevo archivo de salida en el que estará
el nuevo titulo. Este método necesita como
argumento de entrada los nombres de: la
carpeta principal, subcarpeta, archivo
(path), el nombre de la carpeta principal y
la subcarpeta para hacer la concatenación,
es decir, para que el nuevo archivo que
contiene el nuevo titulo se cree dentro de
las carpetas del path original, luego se eli-
mina el archivo del path original y se re-
torna la nueva ruta a la clase principal la
nueva ruta.
ModSubTitulo La función de este método consiste en la
creación del subtitulo del archivo HTML,
además se puede cambiar el subtitulo las
veces que se desee, en ella se pide un nom-
bre de un nuevo archivo de salida en el que
estará el nuevo subtitulo. Este método ne-
cesita como argumento de entrada la ruta
retornada por el método que crea el titulo
(método ModTitulo), que contiene el nom-
bre de la carpeta principal, la subcarpeta y
el nuevo archivo con el nuevo titulo, y
también el nombre de la carpeta principal
y la subcarpeta del path original para hacer
la concatenación, es decir, para que el
nuevo archivo que contiene el titulo y el
nuevo subtitulo se cree dentro de las car-
petas del path original, luego se elimina el
archivo contenido en el path devuelto por
(método ModTitulo) y se retorna la nueva
ruta con el nuevo archivo que contiene ti-
tulo y subtitulo a la clase principal.
ModParrafo La función de este método consiste en la
creación del párrafo del archivo HTML,
además se puede cambiar el párrafo las ve-
ces que se desee, en ella se pide un nombre
de un nuevo archivo de salida en el que es-
tará el nuevo párrafo. Este método necesita
como argumento de entrada la ruta retor-
nada por el método que crea el subtitulo
(método ModSubTitulo),
que contiene el nombre de la carpeta prin-
cipal, la subcarpeta del path original y el
nuevo archivo con el nuevo titulo y subti-
tulo y también el nombre de la carpeta
principal y la subcarpeta del path original
para hacer la concatenación, es decir, para
que el nuevo archivo que contiene el titulo,
subtitulo y el nuevo párrafo se cree dentro
de las carpetas del path original, luego se
elimina el archivo contenido en el path de-
vuelto por (método ModSubTitulo) y se re-
torna la nueva ruta con el nuevo archivo
que contiene titulo, subtitulo y párrafo a la
clase principal y luego se puede abrir el ar-
chivo para evidenciar sus cambios.
ModCaracteristica La función de este método consiste en la
creación de las características del archivo
HTML, además se puede cambiar las ve-
ces que se desee, en ella se pide un nombre
de un nuevo archivo de salida en el que es-
tarán las nuevas características necesitando
como argumento de entrada la ruta retor-
nada por el método que crea el párrafo
(método ModParrafo) que contiene el
nombre de la carpeta principal, la subcar-
peta y el nuevo archivo con el nuevo titulo,
subtitulo y párrafo, el nombre de la carpeta
principal y la subcarpeta del path original
para hacer la concatenación, es decir, para
que el nuevo archivo que contiene el titulo,
subtitulo, párrafo y las nuevas característi-
cas se cree dentro de las carpetas del path
original, luego se elimina el archivo conte-
nido en el path devuelto por (método Mod-
SubParrafo) y se retorna la nueva ruta con
el nuevo archivo que contiene titulo, subti-
tulo párrafo y características a la clase
principal y luego se puede abrir el archivo
para evidenciar sus cambios.

CODIGOS FUENTES
Para el desarrollo de este proyecto hicimos uso de cuatro clases como ya se había manifestado de
las cuales a continuación les presentamos sus respectivos códigos.

CODIGO DE LA CLASE PRINCIPAL

import java.lang.String.*;
import java.io.*;
import javax.swing.*;
import javax.swing.JOptionPane;
class Principal{
public static void main(String[] args)throws IOException{

Directorio ruta=new Directorio();// se crea un objeto de Directorio para llamar los métodos de esta
clase
Htlm ruto=new Htlm();// se crea un objeto de Html para llamar los métodos de esta clase
ModificaTitlle rat=new ModificaTitlle();
//ModificaSubTitlle rot=new ModificaSubTitlle();
//Praga des=new Praga();// se crea un objeto de Modifica para llamar los métodos de esta clase
int opc=2;
String u="";//todas estas variables son declaradas de esta manera ya que ella son asiganadas al
momento
String t="";//de la invocación de los métodos que contiene la carpeta, subcarpeta, archivo,
archivos con
String p="";//nuevo titulo,subtitulo y parrafo,ademas es necesaria esta declaración ya que la
ruta del directorio la necesitan otros métodos.
String a="";
String b="";
String e="";
String r="";
String y="";
String m="";
String num;
do{
num=JOptionPane.showInputDialog(null," MENU PRINCIPAL\n\n1-) CREAR CARPETA
PRINCIPAL\n2-) CREAR SUBCARPETA\n3-) CREAR ARCHIVO\n4-) MODIFICAR
ARCHIVO\n5-) SALIR DE SISTEMA\n\n ¡ ELIGE UNA OPCION !");
opc=Integer.parseInt(num);
switch(opc)
{
case 1:
u=ruta.Carpeta();//invocacion de los metodos que captura el nombre de la carpeta
principal
ruta.Vercar();// y el metodo que verifica si existe la carpeta o no
break;

case 2:
t=ruta.Carpeta2();//invocacion de los metodos que captura el nombre de la subcarpeta
ruta.Vercarr(); // y el metodo que verifica si existe la subcarpeta o no
break;

case 3:
p=ruta.Archivo();//invocacion de los metodos que captura el nombre del
archivo
ruta.Verarch();// y el metodo que verifica si existe el archivo o no
JOptionPane.showMessageDialog(null,"LA RUTA ES "+p);
ruto.Esqueleto(p);//crea las etiquetas en el archivo
break;
case 4:
int opcion=2;
do{
String elegir=JOptionPane.showInputDialog(null," MENU DE LA MODIFICACION\n\n1-)
CAMBIAR TITULO\n2-) CAMBIAR SUBTITULO\n3-) CAMBIAR PARRAFO\n4-) CAMBIAR
SUBTEMAS\n5-) SALIR DE LA MODIFICACION\n\n ¡ ELIGE UNA OPCION !");
opcion=Integer.parseInt(elegir);
switch(opcion)
{
case 1:
a=rat.ModTitulo(p,t);//invocando el metodo que cambia el titulo
p=a;
break;
case 2:
e=rat.ModSubTitulo(a,t);//invocando el metodo que cambia el subtitulo
a=e;
break;
case 3:
y=rat.ModParrafo(e,t);//invocamdo el metodo que cambia el parrafo
e=y;
break;
case 4:
m=rat.ModCaracteristica(y,t);
y=m;
}
}while(opcion!=5);
break;
case 5:
JOptionPane.showMessageDialog
(null,"!HASTA PRONTO!",
"BY ANGELL & ASUMARY",
JOptionPane.INFORMATION_MESSAGE);
break;
}

} while(opc!=5);//fin del while


}//fin delmain
}//fin de la clase

CODIGO DE LA CLASE DIRECTORIO


import java.io.File;
import javax.swing.*;
import java.lang.String.*;
class Directorio{
String y;

String carpeta,subcarpeta,arch;

// metodo crea la carpeta


public String Carpeta(){
try{
carpeta= JOptionPane.showInputDialog("INDIQUE EL NOMBRE DE LA
CARPETA");
File directorio = new File(carpeta);
if(directorio.mkdirs())
JOptionPane.showMessageDialog(null,"CARPETA
CREADA CON EXITO");
else
JOptionPane.showMessageDialog(null,"ESTA CARPETA YA
EXISTE");

}
catch (Exception e){
}
return(carpeta);
}

// metodo crea la subcarpeta en la carpeta principal


public String Carpeta2(){
try{
subcarpeta = JOptionPane.showInputDialog("INDIQUE LA RUTA Y EL NOMBRE DE LA
SUBCARPETA");
File subdir= new File(subcarpeta);
if(subdir.mkdirs())
JOptionPane.showMessageDialog(null,"SUBCARPETA CREADA
CON EXITO");
else
JOptionPane.showMessageDialog(null,"LA SUBCARPETA YA
EXISTE");
}
catch (Exception e) {

}
return(subcarpeta);
}

// metodo verifica si la carpeta principal existe


public boolean Vercar(){

boolean exists=(new File(carpeta)).exists();


return(exists);
}

// metodo verifica si la subcarpeta exixte


public boolean Vercarr(){
boolean exists=(new File(subcarpeta)).exists();
return(exists);
}
// metodo que crea el archivo en la subcarpeta
public String Archivo(){
try {
this.y=JOptionPane.showInputDialog(null,"INDIQUE LA RUTA Y EL
NOMBRE DEL ARCHIVO");
File file = new File(y);
boolean r = file.createNewFile();
if (r)

JOptionPane.showMessageDialog(null,"EXITOSAMENTE SE HA CREADO SU ARCHIVO");


else
JOptionPane.showMessageDialog(null,"EL ARCHIVO EXISTE");
}
catch (Exception e) {
}
return(y);
}
//metodo que verifica si el archivo existe
public boolean Verarch(){
boolean exists=(new File(this.y)).exists();
return(exists);
}
}
CODIGO DE LA CLASE HTML

import java.io.*;
import java.lang.String.*;
import javax.swing.JOptionPane;
import java.util.*;
class Htlm
{
String nombrearchivo;
//metodo que crea en el archivo el esqueleto HTML
public void Esqueleto(String der)throws IOException
{
this.nombrearchivo=der;
try{
this.nombrearchivo=der;
PrintWriter dato = new PrintWriter(nombrearchivo);
dato.println("<html>");
dato.println("<head><title></title></head>");
dato.println("<body>");
dato.println("<h1> </h1>");
dato.println("<p id=ss > </p>");
dato.println("<li> </li>");
dato.println("</body>");
dato.println("</html>");
dato.close();
}
catch (Exception e) {
}
}
}
CODIGO DE LA CLASE QUE MODIFICA EL ARCHIVO
import java.io.*;
import java.lang.String.*;
import javax.swing.JOptionPane;
import java.util.*;
class Modifica//clase que contiene los métodos que cambian el contenido del archivo
{
String nombreruta;
private String NombreArchivo;
private String NombreRuta;
//metodo que cambia el titulo de archivo
public String ModTitulo(String rut,String rute){
this.NombreArchivo=rut;
String r=null;
try{
String archsalida =JOptionPane.showInputDialog(null,"ESCRIBE EL NOMBRE DEL
ARCHIVO");
PrintWriter salida = new PrintWriter(""+rute+"\\"+archsalida+"");
String titulo = JOptionPane.showInputDialog(null,"ESCRIBE EL TITULO");
FileReader arch = new FileReader(""+NombreArchivo+"");
BufferedReader in = new BufferedReader(arch);
String s = new String();
while((s = in.readLine())!=null){
int x = s.indexOf("<title>");
if (x>=0)
salida.println("<title>"+titulo+"</title>") ;
else
salida.println(s);
}//Fin del while
JOptionPane.showMessageDialog(null,"EL TITULO SE HA CREADO");
in.close();
salida.close();
r =(""+rute+"\\"+archsalida+"");
File borra1 = new File(""+NombreArchivo+"");
if(borra1.delete())
JOptionPane.showMessageDialog(null,"EL ARCHIVO CON EXITO FUE ELIMINADO");
else
JOptionPane.showMessageDialog(null,"EL ARCHIVO NO SE HA ELIMINADO");
} catch (IOException e){
System.out.println("!!!error");
}
return(r);
}
//metodo que cambia el subtitulo de archivo
public String ModSubTitulo(String rit,String rot){
this.NombreArchivo=rit;
String w=null;
try{
String archsalida =JOptionPane.showInputDialog(null,"ESCRIBE EL NOMBRE DEL
ARCHIVO DE SALIDA");
PrintWriter salida_2 = new PrintWriter(""+rot+"\\"+archsalida+"");
String subtitulo = JOptionPane.showInputDialog(null,"ESCRIBE EL SUBTITULO");
FileReader arch = new FileReader(""+NombreArchivo+"");
BufferedReader in = new BufferedReader(arch);
String s = new String();
while((s = in.readLine())!=null){
int x = s.indexOf("<h1>");
if (x>=0)
salida_2.println("<h1>"+subtitulo+"</h1>") ;
else
salida_2.println(s);
}//Fin del while
JOptionPane.showMessageDialog(null,"EL SUBTITULO SE HA CREADO");
in.close();
salida_2.close();
w =(""+rot+"\\"+archsalida+".");
File borra1 = new File(""+NombreArchivo+"");
if(borra1.delete())
JOptionPane.showMessageDialog(null,"EL ARCHIVO CON EXITO FUE ELIMINADO");
else
JOptionPane.showMessageDialog(null,"EL ARCHIVO NO SE HA ELIMINADO");
} catch (IOException e){
System.out.println("!!!error");
}
return(w);
}
//metodo que cambia el parrafo de archivo
public String ModParrafo(String ruta,String ruta_2){
this.NombreArchivo=ruta;
String q=null;
try{
String archsalida =JOptionPane.showInputDialog(null,"ESCRIBE EL NOMBRE DEL
ARCHIVO DE SALIDA");
PrintWriter salida_3 = new PrintWriter(""+ruta_2+"\\"+archsalida+"");
String parrafo = JOptionPane.showInputDialog(null,"ESCRIBE EL PARRAFO");
FileReader arch = new FileReader(""+NombreArchivo+"");
BufferedReader in = new BufferedReader(arch);
String s = new String();
while((s = in.readLine())!=null){
int x = s.indexOf("<p");
if (x>=0)
salida_3.println("<p id=ss>"+parrafo+"</p>") ;
else
salida_3.println(s);
}//Fin del while
JOptionPane.showMessageDialog(null,"EL PARRAFO SE HA CREADO");
in.close();
salida_3.close();
q =(""+ruta_2+"\\"+archsalida+"");
File borra1 = new File(""+NombreArchivo+"");
if(borra1.delete())
JOptionPane.showMessageDialog(null,"EL ARCHIVO CON EXITO FUE ELIMINADO");
else
JOptionPane.showMessageDialog(null,"EL ARCHIVO NO SE HA ELIMINADO");
} catch (IOException e){
System.out.println("!!!error");
}
return(q);
}
/////
public String ModCaracteristica(String rutt,String ruta_3){
this.NombreArchivo=rutt;
String l=null;
try{
String archsalida =JOptionPane.showInputDialog(null,"ESCRIBE EL NOMBRE DEL
ARCHIVO DE SALIDA");
PrintWriter salida_4 = new PrintWriter(""+ruta_3+"\\"+archsalida+"");
String caract = JOptionPane.showInputDialog(null,"ESCRIBE CARACTERISTICAS");
FileReader arch = new FileReader(""+NombreArchivo+"");
BufferedReader in = new BufferedReader(arch);
String s = new String();
while((s = in.readLine())!=null){
int x = s.indexOf("<li>");
if (x>=0)
salida_4.println("<li>"+caract+"</li>") ;
else
salida_4.println(s);
}//Fin del while
JOptionPane.showMessageDialog(null,"LA CARACTERISTICAS SE HAN CREADO");
in.close();
salida_4.close();
l =(""+ruta_3+"\\"+archsalida+"");
File borra1 = new File(""+NombreArchivo+"");
if(borra1.delete())
JOptionPane.showMessageDialog(null,"EL ARCHIVO CON EXITO FUE ELIMINADO");
else
JOptionPane.showMessageDialog(null,"EL ARCHIVO NO SE HA ELIMINADO");
} catch (IOException e){
System.out.println("!!!error");
}
return(l);
}
}

RESULTADOS DE LA EJECUCIÓN
RESULTADO FINAL AL ABRIR EL ARCHIVO

CODIGO DEL ESQUELETO MODIFICADO


REFLEXIONES INDIVIDUALES DEL PROYECTO

Ángel Aguilar: fue una labor un poco complicada ya que no encontrábamos algunos métodos bien
entendibles pero en conjunto trabajamos para terminar el proyecto. Una de las dificultades es que
no podíamos modificar el archivo lo cual nos tomó algo de tiempo. Ya por experiencias anteriores
puedo decir que la mejor manera de tratar de hacer las tareas en esta materia es investigando sobre
el dominio del problema e ir poco a poco observando las herramientas necesarias a utilizar.

María González
Para este proyecto la creación de directorios y subdirectorios fu algo difícil al principio, por que al
manejar un nuevo lenguaje se debe manejar nuevos métodos.
A pesar de que este proyecto fue bastante difícil y un poco extenso nos queda el aprendizaje y las
experiencia aprendidas.

PD: Le pedimos disculpas por los nombres de las variables utilizadas en los distintas clases y
métodos ya que es evidente que sus nombres no tienen relación con el tema a tratar por que al ojo
por ciento cuando hacíamos los códigos le poníamos cualquier nombre.
CONCLUSIÓN

Una de las características de la programación orientada a objetos es que la mayoría de las


utilidades o cosas que uno quiera hacer ya están prácticamente determinados, es decir ya están
programados lo cual no exige tanta programación o mejor dicho no tenemos que crear los códigos
a punta de lógica, ya que solo requiere tener muy buena interpretación o análisis de los documentos
proporcionados por el facilitador el cual nos proporciona una idea o las bases para empezar a
implementar los requerimientos de un problema planteado.