jueves, 23 de abril de 2009

Obtener icono de un archivo

import java.io.*;
import javax.swing.*;
import javax.imageio.*;

public class IconExtract {
public static void main(String[] args) throws Exception {

File file = new File("C:/windows/regedit.exe");

//Obtener metadata y crear un icono
sun.awt.shell.ShellFolder sf = sun.awt.shell.ShellFolder.getShellFolder(file);
Icon icon = new ImageIcon(sf.getIcon(true));
System.out.println("type = " + sf.getFolderType());

//mostrar el icono
JLabel ficon = new JLabel(s, icon, SwingConstants.LEFT);

/*Modo 2 (miniatura)
//Obtener metadata y crear un icono
Icon icon = javax.swing.filechooser.FileSystemView.getFileSystemView().getSystemIcon(file);

//mostrar el icono
JLabel ficon = new JLabel(s, icon, SwingConstants.LEFT);

*/

JFrame frame = new JFrame();
frame.getContentPane().add(ficon);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

}

Leer URL

import java.net.*;
import java.io.*;

public class LeerURL {

public static void main(String[] args) {

try {
// Indicamos la URL donde nos conectamos
URL url = new URL("http://www.google.com");

// Buffer con los datos recibidos
BufferedReader in = null;

try {
// Volcamos lo recibido al buffer
in = new BufferedReader(new InputStreamReader(url.openStream()));
} catch(Throwable t){}

// Transformamos el contenido del buffer a texto
String inputLine;
StringBuilder inputText= new StringBuilder();;

// Mientras haya cosas en el buffer las volcamos a las cadenas de texto
while ((inputLine = in.readLine()) != null){
inputText.append(inputLine);
inputText.append("\n");
}

// Mostramos el contenido y cerramos la entrada
System.out.println("El contenido de la URL es: " + inputText);
in.close();

} catch (MalformedURLException me) {
System.out.println("URL erronea");
} catch (IOException ioe) {
System.out.println("Error IO");
}

}

}

Manejo de archivos dentro de un jar

Funciona siempre y cuando el archivo de texto o de imagen se encuentre dentro del .jar que se ejecuta:

Leer archivo
try {
InputStream in = getClass().getResourceAsStream("archivo.txt");
BufferedReader bufferde = new BufferedReader(new
InputStreamReader(in));
String linea = "";
for (linea = bufferde.readLine(); linea != null; linea =
bufferde.readLine())
System.out.println("Linea: " + linea);
} catch (Exception e) {
e.printStackTrace();
}

Leer una imagen
ImageIcon icono = new ImageIcon(getClass().getResource("/resources/images/new.gif"));

Leer Contenido de un Archivo Zip

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class ZipFileRdrExp {

public static void main(String[] args) {

try {

FileInputStream fis = new FileInputStream("C:\\MyZip.zip");
ZipInputStream zis = new ZipInputStream(fis);
ZipEntry ze;
while((ze=zis.getNextEntry())!=null){
System.out.println(ze.getName());
zis.closeEntry();
}

zis.close();

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Uso de javax.swing.JFilechooser

Esta clase permite mostrar una ventana para seleccionar un archivo o directorio. Los pasos básicos para su creación son los siguientes:

1. Creación de la ventana
JFileChooser selectorArchivo = new JFileChooser();

2. Definir que tipo de seleccion estará permitida
selectorArchivo.setFileSelectionMode(CONSTANTE);

Constantes permitidas:
JFileChooser.FILES_ONLY: solo permite elegir archivos
JFileChooser.DIRECTORIES_ONLY: solo permite elegir directorios
JFileChooser.FILES_AND_DIRECTORIES: permite elegir archivos y directorios

3. Definicion de un filtro para archivos
Por defecto se permite elegir cualquier tipo de archivo, si queremos limitarlos podemos crear filtros de las siguientesformas:
javax.swing.filechooser.FileFilter filtro = new FileNameExtensionFilter("Archivo de Texto (.txt)", "txt");
javax.swing.filechooser.FileFilter filtro2 = new FileNameExtensionFilter("Imagenes (jpg, jpeg)", "jpg", "jpeg");

Para establecer el filtro tenemos dos opciones:
establecer el filtro, borrando los demas filtros
selectorArchivo.setFileFilter(filtro);
ó añadir un filtro sin borrar los demas
selectorArchivo.addChoosableFileFilter(filtro);

Adicional, si queremos quitar el filtro que permite seleccionar todos los archivos se debe utilizar:
selectorArchivo.setAcceptAllFileFilterUsed(false);

4. Mostrar archivos ocultos
Si no se desean mostrar los archivos ocultos se utiliza
selectorArchivo.setFileHidingEnabled(true);

5 Mostrar la ventana

selectorArchivo.showSaveDialog(null): muestra una diálogo para salvar
selectorArchivo.showOpenDialog(null): muestra la diálogo para abrir
selectorArchivo.showDialog(null, "Texto del boton de seleccion"): muestra un diálogo definido por el usuario

Estas tres opciones retornar un valor dependiendo de la eleccion del usuario:
JFileChooser.CANCEL_OPTION
JFileChooser.APPROVE_OPTION
JFileChooser.ERROR_OPTION

6. Ejemplo de uso

File file;

if (selectorArchivo.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
file = selectorArchivo.getSelectedFile();
System.out.println (file.getName());
}