Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 19-feb-2006, 19:20   #31 (permalink)
stock tiene algunos puntos positivos de karma
 
Avatar de stock
 
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 1.971
Tema: Sistema de Archivos
Pregunta: Como leer el contenido de una carpeta?
Respuesta: En JAVA, las carpetas son tratadas como ficheros, por lo tanto la clase FILE nos resolvera el problema.

Código PHP:

import java
.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Crysfel Villa
 * Created on Jan 15, 2006
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

public class Directorio {

    public List 
getFiles(String srcthrows Exception{
        
//Creamos el Objeto File con la URL que queremos desplegar
        
File dir = new File(src);
        List 
lista = new ArrayList();
        if (
dir.isDirectory()) {
            if (!
dir.exists()) {
                throw new 
Exception("Error: El directorio no existe");
            }

            
//tomamos los ficheros contenidos en la URL dada
            
String[] archivos dir.list();
            
//agregamos cada fichero en una lista
            
for(int i=0;i<archivos.length;i++)
                
lista.add(archivos[i]);
        }
        return 
lista;
    }
    
    public static 
void main(String arg[]){
        
//instanciamos nuestro objeto
        
Directorio directorio = new Directorio();
        
//tomamos el contenido del la carpeta en la lista
        
List ficheros directorio.getFiles("/home/crysfel/workspace");
        
//desplegamos cada uno
        
System.out.println("Ficheros contenidos");
        for(
int i=0;i<directorio.size();i++)
            
System.out.println("-> "+directorio.get(i));
    }    

__________________
Don't hate the languaje, hate the runtime environment
Crysfel's Blog :: Blog de programación, JAVA,PHP, AJAX, JavaScript, CSS y otras hierbas
stock está desconectado   Responder Citando
Antiguo 07-abr-2006, 14:34   #32 (permalink)
stock tiene algunos puntos positivos de karma
 
Avatar de stock
 
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 1.971
tema: Utilerias
pregunta: como generar PDFs??
respuesta: primero necesitamos bajarnos las librerias para poder hacer eso, en este ejmplo use iText, puedes bajar el JAR desde aqui: http://www.lowagie.com/iText/download.html.

Ahora agregas el jar a tu classpath, e comentado las partes mas importantes en el codigo siguiente, para que te des una idea de como empezar.

Código PHP:
/**
 * Enjoy :-)
 */
import java.awt.Color;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import com.lowagie.text.Chapter;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Section;
import com.lowagie.text.pdf.PdfWriter;

/**
 * Ejemplo de generacion de documentos PDFs
 * @author Crysfel Villa
 * April 06, 2006
 */

public class GenerarPdf {
    public static 
void main(String arcg[]){
        
System.out.println("Comenzando...");
        
//Creamos el documento y asignamos margenes izq,der,arriba,abajo
        
Document document = new Document(PageSize.A450505050);
        try{
            
//creamos el "escritor" de nuestro Documento pdf, especificando la ubicacion y nombre de este.
            
PdfWriter writer PdfWriter.getInstance(document,new FileOutputStream("primer.pdf"));
            
//abrimos el escritor
            
document.open();
            
            
//Crearemos un capitulo, le pondremos un titulo.
            //Paragraph nos permite introducir texto, y darle formato con FontFactory.getFont
            
Paragraph titulo1 = new Paragraph("Capitulo 1",FontFactory.getFont(FontFactory.HELVETICA,18Font.BOLDITALIC, new Color(4010255)));
            
Chapter capitulo1 = new Chapter(titulo11);
            
            
//con '0' no mostramos el numero de pagina
            
capitulo1.setNumberDepth(0);
            
            
//creamos los subtitulos
            
Paragraph subTitulo1 = new Paragraph("Introduccion",FontFactory.getFont(FontFactory.HELVETICA16,Font.BOLD, new Color(25543100)));
            
Paragraph subTitulo2 = new Paragraph("Antecedentes",FontFactory.getFont(FontFactory.HELVETICA16,Font.BOLD, new Color(25543100)));
            
            
//agregamos el capitulo1 a la seccion1
            
Section seccion1 capitulo1.addSection(subTitulo1);
            
Paragraph introduccion = new Paragraph("Esto es texto de la introduccion a nuestro archivo PDF, aqui puedes poner todo el contenido que se te ocurra, y recuerda, Java is so good ;)");
            
seccion1.add(introduccion);
            
            
//agregamos otra seccion con el subtitulo2
            
Section seccion2 capitulo1.addSection(subTitulo2);
            
Paragraph antecedentes = new Paragraph("Esto es muy facil! espero te halla gustado! =D\n\nHave Funnnnnn");
            
seccion2.add(antecedentes);
            
            
//agregamos el capitulo uno al documento
            
document.add(capitulo1);
            
            
//creamos una nueva pagina!
            
document.newPage();
            
document.add( new Paragraph("Esta es una nueva pagina con una imagen!"));
            
            
//ponemos una imagen
            
Image jpg Image.getInstance("imagen.jpg");
            
jpg.setAlignment(Image.MIDDLE);
            
jpg.scalePercent(5050);
            
document.add(jpg);
            
            
//cerramos el "escritor"            
            
document.close();
        }catch(
DocumentException de){
            ;
        }catch(
FileNotFoundException fnfe){
            ;
        }catch(
IOException ioe){
            ;
        }
        
        
        
System.out.println("Done!!");
    }

have funnnnnnnn
__________________
Don't hate the languaje, hate the runtime environment
Crysfel's Blog :: Blog de programación, JAVA,PHP, AJAX, JavaScript, CSS y otras hierbas
stock está desconectado   Responder Citando
Antiguo 24-abr-2006, 14:09   #33 (permalink)
Tipdar no se puede cailificar en este momento
 
Avatar de Tipdar
 
Fecha de Ingreso: octubre-2005
Mensajes: 252
Tema: Arreglos
Pregunta: ¿Cómo ordenar un arreglo MUY GRANDE de enteros y que no demore demasiado?
Respuesta: Utilizando un ordenamiento rápido ó QuickSort.

Por ejemplo:
Código PHP:
// 

public int[] quicksort(int arreglo[], int inicialint finaliza) {
        
int inferior inicial;
        
int superior finaliza;
        
int posicion inicial;
        
boolean continuar true;

        while (
continuar) {
            
continuar false;
            while ((
arreglo[posicion] <= arreglo[superior])
                    && (
posicion != superior)) {
                
superior--;
            }
            if (
posicion != superior) {
                
int temporal arreglo[posicion];
                
arreglo[posicion] = arreglo[superior];
                
arreglo[superior] = temporal;
                
posicion superior;
                while ((
arreglo[posicion] >= arreglo[inferior])
                        && (
posicion != inferior)) {
                    
inferior++;
                }
                if (
posicion != inferior) {
                    
continuar true;
                    
temporal arreglo[posicion];
                    
arreglo[posicion] = arreglo[inferior];
                    
arreglo[inferior] = temporal;
                    
posicion inferior;
                }
            }
        }
        if ((
posicion 1) > inicial) {
            
quicksort(arregloinicialposicion 1);
        }
        if (
finaliza > (posicion 1)) {
            
quicksort(arregloposicion 1finaliza);
        }
        return 
arreglo;
    } 
Esto sirve para cualquier arreglo, pero se recomienda para los muy grandes. inicial y finaliza son los límites y arreglo, pues el arreglo a ordenar. Esto ordena de menor a mayor.

Se puede hacer también utilizando los métodos de la clase Arrays del SDK... por ejemplo:

Código PHP:
//

Arrays.sort(arreglo); 
donde arreglo puede ser un arreglo de byte, char, double, float, int, long, short, Object...

Hasta la vista!!
__________________
El último TipdaR

Última edición por Tipdar; 24-abr-2006 a las 19:05.
Tipdar está desconectado   Responder Citando
Antiguo 26-abr-2006, 13:38   #34 (permalink)
Tipdar no se puede cailificar en este momento
 
Avatar de Tipdar
 
Fecha de Ingreso: octubre-2005
Mensajes: 252
Números fraccionarios

Tema: Clase Números Fraccionarios

Esta clase la he implementado para un proyecto de la facultad... a cualquiera puede servirle. He tratado de que sea lo más orientada a objetos posible.

Código PHP:
//
public class NumerosFraccionarios {
    private 
int numerador;

    private 
int denominador;

    public 
NumerosFraccionarios(int numeradorint denominador) {
        
this.numerador numerador;
        
this.denominador denominador;
    }

        public 
NumerosFraccionarios(NumerosFraccionarios fraccion) {
                
numerador fraccion.getNumerador();
                
denominador fraccion.getDenominador();
        }

    public 
int getDenominador() {
        return 
denominador;
    }

    public 
void setDenominador(int denominador) {
        
this.denominador denominador;
    }

    public 
int getNumerador() {
        return 
numerador;
    }

    public 
void setNumerador(int numerador) {
        
this.numerador numerador;
    }

        
// Le sumamos a nuestro objeto NumerosFraccionarios otro objeto NumerosFraccionarios
    
public void suma(NumerosFraccionarios fraccion) {
                
int den fraccion.getDenominador();
        
this.numerador this.numerador den fraccion.getNumerador() * this.denominador;
        
this.denominador this.denominador den;
    }

        
// Le sumamos a nuestro objeto NumerosFraccionarios otro objeto NumerosFraccionarios
    
public void resta(NumerosFraccionarios fraccion) {
                
int den fraccion.getDenominador();
        
this.numerador this.numerador den fraccion.getNumerador() * this.denominador;
        
this.denominador this.denominador den;
    }

        
// Multiplicamos nuestro objeto NumerosFraccionarios por otro objeto NumerosFraccionarios
    
public void multiplica(NumerosFraccionarios fraccion) {
        
this.numerador *= fraccion.getNumerador();
        
this.denominador *= fraccion.getDenominador();
    }

        
// Dividimos nuestro objeto NumerosFraccionarios por otro objeto NumerosFraccionarios
    
public void divide(NumerosFraccionarios fraccion) {
        
this.numerador *= fraccion.getDenominador();
        
this.denominador *= fraccion.getNumerador();
    }

        
// Lleva nuestro objeto NumerosFraccionarios a la fraccion irreducible
        // Si 3/4, la fracción irreducible sería 3/4; si 2/4, la fracción irreducible sería 1/2
    
public void irreducible() {
        
int num Math.abs(this.numerador);
        
int den Math.abs(this.denominador);
        
int resto 0;
        while (
den != 0) {
            
resto num den;
            
num den;
            
den resto;
        }
        
this.numerador /= num;
        
this.denominador /= num;
    }

Hasta pronto!
__________________
El último TipdaR
Tipdar está desconectado   Responder Citando
Antiguo 29-abr-2006, 10:29   #35 (permalink)
Tipdar no se puede cailificar en este momento
 
Avatar de Tipdar
 
Fecha de Ingreso: octubre-2005
Mensajes: 252
Tema: Arreglos
Pregunta: ¿De qué manera se puede buscar un elemento en un arreglo de enteros MUY GRANDE sin que demore mucho?
Respuesta: Utilizando una búsqueda binaria ó BinarySearch.

La precondición para usar una búsqueda binaria es que el arreglo esté previamente ordenado. En los arreglos muy grandes se aconseja hacer un ordenamiento rápido y luego la búsqueda binaria.

Ejemplo recursivo:
Código PHP:
//

// array es el arreglo ordenado, value el valor a buscar, start y ending los límites
public int binarysearch(int array[], int valueint startint ending) {
        if (
ending start) {
            return -
1;
        }
        
int middle = (start ending) / 2;
        if (array[
middle] == value) {
            return 
middle;
        }
        if (
value < array[middle]) {
            return 
binarysearch(array, valuestart, (ending 1));
        } else if (
value >= array[middle]) {
            return 
binarysearch(array, value, (start 1), ending);
        }
        return -
1;
    } 
Ejemplo iterativo:
Código PHP:
//

// array es el arreglo ordenado, value el valor a buscar, start y ending los límites
public int binarysearch(int[] array, int value,    int startint ending) {
        while (
start ending) {
            
int middle = (start ending) / 2;
            if (array[
middle] == value) {
                return 
middle;
            }
            if (
value < array[middle]) {
                
ending middle 1;
            } else if (
value >= array[middle]) {
                
start middle 1;
            }
        }
        return -
1;
    } 
Usando los métodos de la clase Arrays:

Código PHP:
//

// array es el arreglo ordenado (byte, int, short, long, char...) y element es el elemento a buscar.
int posicion Arrays.binarySarch(array, element); 
En todos los ejemplos se devuelve la posición del elemento dentro del arreglo y si no existe devuelven un número negativo.

Have fun!
__________________
El último TipdaR
Tipdar está desconectado   Responder Citando
Antiguo 03-may-2006, 12:54   #36 (permalink)
Tipdar no se puede cailificar en este momento
 
Avatar de Tipdar
 
Fecha de Ingreso: octubre-2005
Mensajes: 252
Tema: Validaciones
Pregunta: ¿Cómo validar que un correo electrónico esté correctamente escrito?
Respuesta: De muchas maneras, en este caso he empleado una validación mediante expresiones regulares.

Para este ejemplo he empleado el SDK 1.5:

Código:
//

import java.util.regex.Pattern;

//...

public boolean validarCorreoElectronico(String cadena) {
   return ((Pattern.compile("[a-zA-Z0-9_]+[.[a-zA-Z0-9]+]*@[[a-zA-Z0-9_]+.[a-zA-Z0-9]+]+")).matcher(cadena)).matches();
}
Este método retorna true en caso de que esté bien escrito y false pues, para lo contrario.
__________________
El último TipdaR

Última edición por Tipdar; 07-may-2006 a las 18:38.
Tipdar está desconectado   Responder Citando
Antiguo 07-jun-2006, 11:33   #37 (permalink)
stock tiene algunos puntos positivos de karma
 
Avatar de stock
 
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 1.971
Tema: Validaciones
Pregunta: Como validar solo letras y espacios?
Respuesta: Este FAQ es una respuesta que le dia a una companiera, la cual queria validar que en un String solo tubiera letras y espacios.

para estos casos las expresiones regulares son la manera mas facil de resolverlo...

Lo unico que hay que hacer es modelar la expresion donde unicamente se acepten letras y espacio, las letras sabemos que comienzan de A-Z y a-z. hasta ahora la expresion esta asi

[A-Za-z]

Nos hace falta el espacio, pues se lo agregamos dentro del rango

[A-Za-z ]

ok, exelente! esa expresion cumple para:

ej1: Hola como estas
ej2: para EsTa TaMbIeN

pero no para estas:

ej1: No para mi, que triste :(
ej2: tampoco para mi?? porque??

bien, hasta aqui todo bien, perooooo, lo que aqui se necesita es que cuando esten otros caracteres que no sean letras ni espacio me lo haga saber para que yo les mande un mensaje de entrada invalida, ok, entonces lo unico que tenemos que ahcer es negar nuestra expresion.

[^A-Za-z ]

ahora si!! esta lista para decirme cuando se encuatran otros caracteres raros!!

ok, pasemos a JAVA, para el manejo de expresiones tenemos 2 clases...

java.util.regex.Matcher;
java.util.regex.Pattern;

con la primera definimos el patron o la expresion que queremos.
con la segunda validamos la entrada....

el codigo quedaria asi:
Código PHP:
/**
 * @author Crysfel Villa
 * June 6, 2006
 */
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class 
Expresion {
    public static 
void main(String args[]){
        
String entrada " No para mi?? que triste :( por que??";
        
Pattern patron Pattern.compile("[^A-Za-z ]");
        
Matcher encaja patron.matcher(entrada);
        
        if(!
encaja.find())
            
System.out.println("solo tiene letras y espacio!");
        else
            
System.out.println("tiene otra cosa");

        
//tambie podemos quitarle esos caracteres y dejar solo las letras y espacios, checa esto!!
        
String resultado encaja.replaceAll("");
        
System.out.println(entrada);
        
System.out.println(resultado);
    }

bueno, espero que este mini tutorial te peuda servir!!
__________________
Don't hate the languaje, hate the runtime environment
Crysfel's Blog :: Blog de programación, JAVA,PHP, AJAX, JavaScript, CSS y otras hierbas
stock está desconectado   Responder Citando
Antiguo 18-jun-2006, 20:14   #38 (permalink)
stock tiene algunos puntos positivos de karma
 
Avatar de stock
 
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 1.971
Cool

Tema: Utilerias.
Pregunta: Como puedo dar formato de moneda a un double?
Respuesta: Java nos provee de una clase para esto, la cual es DecimalFormat hubicada en el paquete import java.text.DecimalFormat.

Ok, primero necesitamos definir un patron, o mejor dicho especificar el formato que queremos, en el ejemplo siguiente el patron es $###,###.##, donde el caracter # sera sustituido por un numero.

Una vez definido el patron creamos una instancia de la clase DecimalFormat, y en el constructor de esta le pasamos el patron.

Por ultimo ejecutamos el metodo format y le damos el double que queremos darle formato, este metodo regresa un String.

Código PHP:
        //By Crysfel

        
double value 43214.346543;
        
String patron "$###,###.##";
        
DecimalFormat myFormatter = new DecimalFormat(patron);
        
String salida myFormatter.format(value);
        
System.out.println(value "  " patron "  " salida); 
Have funnnnnnnnn
__________________
Don't hate the languaje, hate the runtime environment
Crysfel's Blog :: Blog de programación, JAVA,PHP, AJAX, JavaScript, CSS y otras hierbas
stock está desconectado   Responder Citando
Antiguo 25-jun-2006, 09:53   #39 (permalink)
juanpablomonte está en el buen camino
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 255
Idea

Tema: Listas doblemente Enlazadas.
Pregunta: que son y como puedo construir una?
Repuesta:

Las listas doblemente enlazadas, son un tipo de estructura de datos, que se caracteriza por contener unidades compuestas de datos entrelazadas entre si llamadas nodo los cuales contienen dos apuntadores, uno hacia adelante, y el otro hacia atras.( Para entender esto, se debe tener una idea basica de estructuras de datos, punteros, y clases)

Estos Nodos, se enlazan entre ellos, formando una cadena de datos.( identica a las Listas enlazadas simples ya tratadas en estas FAQ's pero que se podra recorrer luego en dos direcciones: de atras hacia adelante y de adelante hacia atras. )


Ejemplo:


Este ejemplo, va a constar de 3 partes. En la primera, laimplementacion de la clase subnodo; en la segunda, la imp. de la clase ListaDoble; y en la ultima un pequeño programita que hace algunas operaciones para testearla.


Primera parte: