lunes, 6 de agosto de 2012

Listar unidades del sistema con JList en java



Desempolvandomibaúldecódigospersonales, les traigo una parte de unaaplicaciónque hice haces unos años,cada lunescompartiré con todos ustedescódigospersonales que no se han visto en ninguna web,y espero que sean de su utilidad.
¿Pero como listamos las unidades del sistema en un JList?
primero importamos lalibreríanativaJNA(api nativa para manipularlibreríascompartidas de windows .dll y .so en linux).tambiénhacemos uso de lalibreríaRT que la encontramos en el paquete de java con la ruta, C:\Program Files (x86)\Java\jre7\lib, en el proyecto solovieneincluida lalibreríaJNA ya que lalibreríart es muy pesada (45 a 50MB).
una vez hecho esto vamos hacer uso delKernel, el cual nosproporcionaraciertainformaciónimportante para proceder a escanear y verificar laexistenciade alguna unidad de disco(sea disco duro o dispositivo USB)
Métodoel cual obtenemos las unidades.


           File[] files = File.listRoots();
if (files != null) {
for (File f : files) {
DriveInfo di = new DriveInfo();
di.drive = f.getAbsolutePath();
if (di.drive.endsWith("\\")) {
di.drive = di.drive.substring(0, di.drive.length() - 1);
}
di.size = f.getTotalSpace();
di.free = f.getFreeSpace();
try {
VolumeInformation vi = getVolumeInformation(di.drive + "\\");
di.fileSystem = vi.fileSystemName;
di.name = vi.volumeName;
drives.add(di);
} catch (LastError ex) {
// device is not ready
if (ex.getLastError() != 21) {
ex.printStackTrace();
}
}
}
}


de esta forma obtengo las unidades,y no solo el nombre si no todo lo que puedo extraer de ellas.
¿pero como agregamos o añadimos al JLis?
para esto necesito crear un ListDriveInfo (Lista todos los datos queestánen el ArrayList), DriveInfo es nada mas que una clase a la cual se le pasan los datosextraídospor elmétodoque realiza labúsquedade las unidades y por otra clase que me separa dichos datos.
Forma para añadir las unidades al JList


         
for (DriveInfo di : drives) {

_lista_modelo.addElement(String.format(di.name+" "+"("+di.drive+")"));
icono_lista rl=new icono_lista(drives);
lista_uni.setCellRenderer(rl);
}


recorro el array con bucle for, y me retorna los valores que deseo agregar al JList en este caso el nombre de la unidad y la etiqueta del disco,el proximo lunescompartirélaaplicacióncompleta que se llama JFAnalizerHard-Disk(analizador del disco duro marca javaface-elblogdelprogramador)completamente desarrollado en java.

DESCARGAR


No hay comentarios:

Publicar un comentario