lunes, 27 de agosto de 2012

2 x 1 Arrastrar y leer fichero, reemplazar fichero en java





Hoy es lunesdíade dos por uno enCódigojava, directo de mibaúldecódigosles traigo doscódigosmuy buenos, reemplazar un fichero existente y arrastrar y soltar un fichero desde cualquier parte de tu PC, pero primeroconozcamosunos conceptos.

DropTarget: se asocia con un componente cuando ese componente desea aceptar caídas durante las operaciones de arrastrar y soltar.

DropTargetListener: muestra unainformaciónvisual ante los ojos del usuario en las operaciones de arrastrar y soltar.

DnDConstants:Esta clase contiene valores constantes que representan un tipo de acción (s) que debe realizar una operación de arrastrar y soltar.

SimpleDateFormat:es una clase concreta para dar formato a fechas y analizar de una manera sensible a la localidad.

una vez entendido estos conceptos vamos alcódigo.

Como reemplazar un fichero existente?
primero tenemos que crear el componenteJFileChooser(proporcionauna interfaz de usuario para elegir un fichero determinado) que nos permitiraescogerel fichero, y extraer el archivo seleccionado por medio de la propiedadgetSelectedFile(),aquíes donde sabremos si el fichero existe o no , una vez obtenido el fichero utilizamos la propiedad de la claseFile, exists() para saber si el fichero es existente o no
  

fileChooser = new JFileChooser() {
@Override public void approveSelection() {
File f = getSelectedFile();
if(f.exists() && getDialogType() == SAVE_DIALOG) {

String m = String.format("%s EL FICHERO YA EXISTE.
DESEA REEMPLAZARLO?", f.getAbsolutePath());
int rv = JOptionPane.showConfirmDialog(this, m, "GUARDAR", JOptionPane.YES_NO_OPTION);
if(rv==JOptionPane.YES_OPTION) {

_mensaje.setText("Fichero reemplazado con exito....!!");

}
}
super.approveSelection();
}
};



de esta forma obtenemos el fichero y comprobamos la existencia del mismo, con la propiedadgetDialogType de la clase JFileChooser seleccionamos el tipo en este casoSAVE_DIALOG(para guardar cualquier fichero), una vez seleccionado el fichero damos clic en guardar y nos mostrara un mensaje,donde indica que el fichero ya existe y si desea reemplazarlo.

Arrastrar y Soltar un fichero?
existiráalgunaaplicaciónque necesitemos unafunciónde arrastrar cualquier fichero,ysegúnello sera su complejidad pero estecódigoes simple yfácilde entender primero construimos elDropTargetListener que esbásicamenteun evento o un escucha.

DropTargetListener dtl = new DropTargetAdapter() {
@Override public void dragOver(DropTargetDragEvent dtde) {
if(dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
dtde.acceptDrag(DnDConstants.ACTION_COPY);
return;
}
dtde.rejectDrag();
}
@Override public void drop(DropTargetDropEvent dtde) {
try{
if(dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
dtde.acceptDrop(DnDConstants.ACTION_COPY);
Transferable t = dtde.getTransferable();
List list = (List)t.getTransferData(DataFlavor.javaFileListFlavor);
Object o = list.get(0);
if(o instanceof File) {
File file = (File) o;
imagen_pequeña.setIcon(FileSystemView.getFileSystemView().getSystemIcon(file));
imagen_grande.setIcon(new ImageIcon(sun.awt.shell.ShellFolder.getShellFolder(file).getIcon(true)));
/***************PROPIEDAD DEL FicHERO************************/

lb_nombre.setText(""+file.getName());
lb_ruta_fichero.setText(""+file.getAbsolutePath());
lb_tamaño.setText(""+formateador.format(file.length()/1024.0/1024.0)+" MB");
/**********************MODIFICADO CUANDO??**********************************/
SimpleDateFormat sdf = new SimpleDateFormat ( "MM/dd/yyyy HH:mm:ss" ) ;
fecha_modificada.setText(""+sdf.format(file.lastModified()));

/******************************************/
}
dtde.dropComplete(true);
return;
}
}catch(UnsupportedFlavorException ufe) {
ufe.printStackTrace();
}catch(IOException ioe) {
ioe.printStackTrace();
}
dtde.rejectDrop();
}
};



uan vez ya armado el escucha y declarada la constanteACTION_COPY , por medio de una lista obtendremos el fichero y para mostrar el icono de este necesitaremos importar lalibreríart.jar , y la encontramos en la ruta esC:\Program Files (x86)\Java\jre7\lib, una vez importada estalibreríautilizamos la propiedadFileSystemView.getFileSystemView().getSystemIcon(file) la cual recibe al fichero y obtiene su icono,tambien podemos obtener las propiedades de fichero,como su nombre,su peso,en quedirecciónesta alojado,y cuando fue modificado por ultima vez todo esto lo hacemos con las propiedades de la claseFile

DESCARGAR



No hay comentarios:

Publicar un comentario