jueves, 30 de mayo de 2013

Explora y lee Archivos de tu Pc con java (Forma 1)


A petición de un usuario hoy les presento como realizar un explorador de archivos y leer el archivo seleccionado,pero primero.

Que es un JTree?
un JTree es un árbol que muestra un conjunto de datos en jerarquía, el cual podemos abrir cada nodo o directorio y subdirectorios que posea el directorio origen en este caso un explorador de archivos del directorio desktop o escritorio de la Pc.

para mi un arbol o JTree es uno de los elementos de swing mas complejos seguido del JTable que tiene java. el código que comparto con ustedes lo saque de una aplicación(Decompile) para que lo puedan mejorar si son curiosos dentro del proyecto de descarga encontraran una clase cuyo nombre esFileTreeListener es el escucha de la claseFileTreePanel ademas de ser el oyente o evento me permite añadir un JPopupMenu con el fin de añadir o eliminar elementos al hacer click derecho con el mouse.

Pero como añado o en listo los archivos de un determinado directorio?
para en listar un directorios tengo al metodolistRoots()de la clase File que me permite en listar todos los directorios del computador.
DefaultTreeModel es la clase que nos contendrá todos los datos en este caso los archivos que veremos en el JTree(La vista)
DefaultMutableTreeNode me permite identificar los padres(Directorios) y saber si cada padre tiene hijos(Ficheros) esto lo usa el JTree para saber que pintar y diferenciar quien es hijo(Fichero) de cada padre(Directorios), ademas esta Clase permite modificar las asociaciones entre padres y hijos lo quepermitiríaañadir nuevos hijos a los padres o añadir mas padres.

File[] roots = null;
if (Constants.isWindows)
roots = fsv.getRoots();
else
roots = File.listRoots();

if (roots.length == 1)
{
rootNode = new DefaultMutableTreeNode(new FileTreeNode(roots[0]));
populateSubTree(rootNode);
}
else if (roots.length 1)
{
rootNode = new DefaultMutableTreeNode("Computer");
for (File root:roots)
rootNode.add(new DefaultMutableTreeNode(root));
}
else
rootNode = new DefaultMutableTreeNode("Error");

fileTreeModel.setRoot(rootNode);


este pequeño fragmento de código es el inicializador ,primero determina que tipo de sistema operativo tiene el usuario luego en lista los directorios y comienza añadir los padres y los hijos.

Como leer un Archivosegúnsea la extension al seleccionar un hijo(Fichero) del JTree?
dentro de la claseFileTreePanel existe un método llamandoAbreArchivo(valor1,valor2) este método me recibe dos valores la clase padre que posee el main(principal) y la ruta del archivo seleccionado esta ruta la recibe la claseFileReader que luego pasara a ser leida por unBufferedReader que me obtendrá el contenido del archivo seleccionado.


if (abrir != null) {
System.out.println("ENTRO ABRIR");

if (abrir.getAbsolutePath().endsWith(".txt")||abrir.getAbsolutePath().endsWith(".java")) {

System.out.println("ENTRO EN LEER");
/***********************************/
FileReader archivo = new FileReader(abrir);
BufferedReader leer = new BufferedReader(archivo);
while ((s = leer.readLine()) != null) {
cad += s + "\n";

}
main.getTextArea().setText(cad);

leer.close();

}
else {

JOptionPane.showMessageDialog(null, "Solo se permiten archivos con extension *.txt,*.java ");
}

}


DESCARGAR CODIGO FUENTE

1 comentario: