Foros del Web » Programación para mayores de 30 ;) » Java »

FAQ's de Java

Estas en el tema de FAQ's de Java en el foro de Java en Foros del Web. Tema : Sistema de Archivos Pregunta : Como leer el contenido de una carpeta? Respuesta : En JAVA, las carpetas son tratadas como ficheros, por ...

  #31 (permalink)  
Antiguo 19/02/2006, 20:20
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 4 meses
Puntos: 53
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));
    }    

  #32 (permalink)  
Antiguo 07/04/2006, 14:34
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 4 meses
Puntos: 53
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
  #33 (permalink)  
Antiguo 24/04/2006, 14:09
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 19 años
Puntos: 7
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/04/2006 a las 19:05
  #34 (permalink)  
Antiguo 26/04/2006, 13:38
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 19 años
Puntos: 7
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
  #35 (permalink)  
Antiguo 29/04/2006, 10:29
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 19 años
Puntos: 7
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
  #36 (permalink)  
Antiguo 03/05/2006, 12:54
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 19 años
Puntos: 7
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/05/2006 a las 18:38
  #37 (permalink)  
Antiguo 07/06/2006, 11:33
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 4 meses
Puntos: 53
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!!
  #38 (permalink)  
Antiguo 18/06/2006, 20:14
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 4 meses
Puntos: 53
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
  #39 (permalink)  
Antiguo 25/06/2006, 09:53
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 19 años, 3 meses
Puntos: 0
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:


Código PHP:


       
public class subnodo {
    private 
int info;
    private 
subnodo prox;
    private 
subnodo ant;

    
subnodo()
    {
info=0;
     
prox=null
     
ant=null;
    }
    
    public 
void setInfo(int x)
    {
info=x;
    }
    public 
void setProx(subnodo p)
    {
prox=p;
    }
    public 
void setAnt(subnodo a)
    {
ant=a;
    }
    
    public 
int getInfo()
    {return 
info;
    }
    public 
subnodo getProx()
    { return 
prox;
        
    }
    public 
subnodo getAnt()
    { return 
ant;
        
    }
    
    public 
String  toString()
    { return (
"\t"+info);   
    }



Segunda Parte, La de la clase generica TDA ListaDoble.


Código PHP:
public class ListaDoble {
    
subnodo frente;

  public 
ListaDoble()
  {
frente=null;
  }
  
public 
void insertarDoble(int  x )
subnodo  p;
  
= new subnodo();
  if(
p!=null)
   { 
p.setInfo(x);
     
p.setProx(frente);
     
     if( 
frente != null)  frente.setAnt(p);
      
frente p;
   }
  else
    
System.out.println("\n Error falta memoria  ");
   
}
public 
void imprimirLista()
 {
   
subnodo p;
   
p=frente;
    
System.out.println(" Impresion de la lista doble de enteros ");
   while (
p!=null)
    { 
System.out.print(" "+p.toString());
      
p=p.getProx();
    }
 
System.out.println( ); 
 
 }
 
 public 
String toString()
 {
String aux=" ";
  
subnodo  p;
   
p=frente;
   while (
p!=null)
    { 
aux=aux+p.toString();
      
p=p.getProx();
    }
  return 
aux;
 
 }

 
public 
void buscar(int x)
{
subnodo  p;
 
p=frente;
 while(
p!=null && p.getInfo()!=x)
  {
p=p.getProx();
  }    
  if(
p!=null)
    {
        if(
p.getProx()!=null)
          
System.out.println("el elemento posterior es "+p.getProx().getInfo());
        else
          
System.out.println("No hay  elemento posterior "); 
          
        if(
p.getAnt()!=null)
          
System.out.println("el elemento anterior es "+p.getAnt().getInfo());
        else
          
System.out.println("No hay  elemento anterior ");  
          
    }
    
}


Tercera y Ultima Parte, la del main method para consumir la clase ListaDoble

Código PHP:
   
class TestListaDoble
   

      public static 
void main (String []arg)
      { 
ListaDoble a=new ListaDoble();  //creacion del objeto
         
int x;
         
int op;
      
         do{
            
System.out.println("1 Carga  ");
            
System.out.println("2 Imprimir  ");
            
System.out.println("3  buscar ");
            
System.out.println("4   ");
            
System.out.println("5   ");
            
System.out.println("6   ");
            
System.out.println("0 fin  ");
            
System.out.print("  Ingrse la opcion  : ");
         
            
op=Leer.datoInt();
         
            switch(
op)
            { 
               case 
1:System.out.println(" Ingreso de datos a la lista ");
                  
System.out.print(" Ingrese un numero entero [0 = FIN]"); 
                  
x=Leer.datoInt();
               
                  while(
x!=0)
                  { 
a.insertarDoble(x);
                     
System.out.print(" Ingrese un numero entero [0 = FIN]"); 
                     
x=Leer.datoInt();
                  }
                  break;
               case 
2:  a.imprimirLista();
                  break;
            
            
               case 
3    :System.out.print(" Ingrese un numero para buscar "); 
                  
x=Leer.datoInt();
                  
a.buscar(x);
               
               
                  break;
            
            }
         
                  
         }while(
op!=0);
      
      }
   } 

Espero que le sirva a alguien, cualquier duda escribanme.

Saludos !
  #40 (permalink)  
Antiguo 26/07/2006, 16:18
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 4 meses
Puntos: 53
Tema: Utilerias
Pregunta: como ejecutar una tarea cada cierto tiempo??
Respuesta: Java cuenta con la clase Timer, la cual ejecuta un TimerTask cada cierto intervalo definido por ti, esto es util cuando queremos hacer una reloj, o cuando queremos programar una animacion de imagenes, en fin, tiene muchas ventajas.

Aqui in ejemplo basico:

Código PHP:
/*************************************/

import java.util.Timer;
import java.util.TimerTask;

/**
 * @author crysfel
 * July 26, 2006
 */

public class Cronometro {
    private 
Timer timer;
    private 
int segundos;
    
    public 
Cronometro(int seconds) {
        
timer = new Timer();
        
segundos seconds;
        
timer.schedule(new RemindTask(),01*1000);
    }

    class 
RemindTask extends TimerTask {
        public 
void run() {
                
segundos--;
                
System.out.println(segundos);
                if(
segundos<=0){
                    
System.out.println("Terminamos la ejecucion del timer");
                    
timer.cancel(); 
                }
        }
    }

    public static 
void main(String args[]) {
            
System.out.println("Inicia conteo: 5");
            new 
Cronometro(5);
    }

El ejemplo anterior, lo unico que hace es un cronometro, cada segundo imprime el conteo regresivo, primero, la clase Cronometro en el contructor esta recibiendo el total de segundos a regresar, ahi se instancia el Timer, luego se invoca el metodo schedule, el cual recibe como parametro una clase Timertask, la cual para este caso es una clase muy sencilla llamada RemindTask que extiende de TimerTask y que sobreescribe el metodo run().

lo que se encuentre dentro del metodo run es lo que se estara ejecutando cada segundo.

have funnnnnnn
  #41 (permalink)  
Antiguo 26/07/2006, 17:48
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 4 meses
Puntos: 53
Tema: Sistema de archivos
Pregunta: Como copiar archivos o carpetas??
Respuesta: Hace ya un buen rato que hice esta sencilla clase que se encarga de hacerlo, el chiste de esto es leer los archivos con la clase File, luego convertirlo a Bytes e ir escribiendo en el nuevo destino.

Código PHP:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * @author: Crysfel Villa
 * Created: Friday, June 03, 2005 4:54:59 PM
 * Modified: Friday, June 03, 2005 4:54:59 PM
 */


public class Copiar{
    
    
/**
     * Copia un directorio con todo y su contendido
     * @param srcDir
     * @param dstDir
     * @throws IOException
     */
    
public void copyDirectory(File srcDirFile dstDirthrows IOException {
        if (
srcDir.isDirectory()) {
            if (!
dstDir.exists()) {
                
dstDir.mkdir();
            }
            
            
String[] children srcDir.list();
            for (
int i=0i<children.lengthi++) {
                
copyDirectory(new File(srcDirchildren[i]),
                    new 
File(dstDirchildren[i]));
            }
        } else {
            
copy(srcDirdstDir);
        }
    }
    
    
/**
     * Copia un solo archivo
     * @param src
     * @param dst
     * @throws IOException
     */
    
public void copy(File srcFile dstthrows IOException {
        
InputStream in = new FileInputStream(src);
        
OutputStream out = new FileOutputStream(dst);
        
        
        
byte[] buf = new byte[1024];
        
int len;
        while ((
len in.read(buf)) > 0) {
            
out.write(buf0len);
        }
        
in.close();
        
out.close();
    }
    
    public static 
void main(String arg[]){
        
Copiar cp = new Copiar();
        try{
            
cp.copy(new File("log.mdb"),new File("directorio/log.mdb"));
            
cp.copy(new File("hoja.jpg"),new File("directorio/hoja copy.jpg"));
            
System.out.print("Copiado con exito");
        }catch(
Exception e){
            
System.out.println(e);
        }
    }

have funnnnnn
  #42 (permalink)  
Antiguo 31/08/2006, 16:30
 
Fecha de Ingreso: junio-2005
Ubicación: Cucuta
Mensajes: 62
Antigüedad: 19 años, 4 meses
Puntos: 2
Tranferir archivos con sockets en java

Tema: Transferencia de archivos usando sockets
Pregunta: ¿Como puedo enviar archivos de cualquier tipo usando sockets?
Respuesta: La solución a este problema es muy sencilla, se establece una comnicación cliente - servidor y se transfiren los bytes pertencientes al archivo a transmitir, en el ejemplo que se muestra a continuación el cliente envía un archivo de nombre php.pdf al servidor y este lo escribe en su disco.

Servidor.java
Código:
/*
 * Servidor.java
 *
 * Author: Antony Delgado
 * Created: 31 de Agosto de 2006 
 */

import java.net.ServerSocket;
import java.net.Socket;
public class Servidor implements Runnable {
    ServerSocket server;
    public Servidor() {
        try {
            //CREAMOS EL SOCKET DEL SERVIDOR
            server=new ServerSocket(2002);
            System.out.println("Servidor corriendo...");
        } catch(Exception e) {
            System.out.println("Error al correr el servidor\n"+e);
            System.exit(1);
        }
    }
    
    public void run() {
        Socket client=null;
        while (true) {
            if (server==null)
                return;
            try {
                //ESPERA A QUE LLEGUE UN CLIENTE
                client=server.accept();
                System.out.println("Llegó un cliente!");
            } catch(java.io.IOException e) {
                System.err.println("No se pudo establecer conexión " + e.getMessage());
            }
            try {
                //ABRIMOS UN BUFER PARA DESCARGAR LO QUE EL CLIENTE NOS ESTÁ ENVIANDO
                java.io.InputStream in = client.getInputStream();
                //CREAMOS LA INSTANCIA PARA ESCRIBIR EL ARCHIVO EN DISCO
                java.io.FileOutputStream out = new java.io.FileOutputStream(new java.io.File("C:\\php.pdf"));
                byte[] buf = new byte[1024];
                int len;
                while ((len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
                in.close();
                out.close();
            } catch(java.io.IOException e) {
                System.out.println("Error: " + e);
            }
        }
    }
    
    public static void main(String a[]) {
        Servidor servidor = new Servidor();
        // Ponemos a correr nuestro hilo servidor
        new Thread(servidor).start();
    }
}
Cliente.java
Código:
/*
 * Cliente.java
 *
 * Author: Antony Delgado
 * Created: 31 de Agosto de 2006 
 */

import java.net.Socket;
import java.io.InputStreamReader;

public class Cliente {
    private String ip = "127.0.0.1";//O localhost o la que quieras 192.168.0.1 etc...
    private int puerto = 2002;
    private String nomArchivo = "D:\\Antony\\REDES\\php.pdf";
    public Cliente(){
        Socket socket = null;
        java.io.FileInputStream in = null;
        java.io.FileOutputStream pt = null;
        try {
            socket = new Socket(ip,puerto);
            pt = (java.io.FileOutputStream)socket.getOutputStream();//
            in = new java.io.FileInputStream(new java.io.File(nomArchivo));
        } catch(Exception e) {
            System.out.println("No se pudo crear la conexión\n"+e);
        }
        try {
            socket.sendUrgentData(100);
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0 ){
                pt.write(buf, 0, len);
            }
            pt.close();
            in.close();
            socket.close();
        } catch(Exception e) {
            System.out.println("Error al enviar mensaje\n"+e);
        }
    } 
    public static void main(String a[]) {
        new Cliente();
    }
}
Java, Que nota de lenguaje

Última edición por antony_fire; 31/08/2006 a las 16:33 Razón: Se ven muy gay los corazoncitos que tenía
  #43 (permalink)  
Antiguo 08/10/2006, 17:00
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 4 meses
Puntos: 53
Tema: Configuraciones
Pregunta: Como configuro mi classpath en eclipse?
Respuesta: Para hacer esto primero necesitamos organizar nuestro proyeto de la mejor manera, se recomienda primeramente separar el codigo fuente de los archivos compilados, y de igual manera crear una carpeta donde estaran las librerias, documentacion, etc... supongamos que tenemos esta estructura de carpetas en nuestro proyecto:

+proyecto
++bin
+++paquete
----Programa.class
----Otro.class

++src
+++paquete
----Programa.java
----Otro.java

++lib
---mail.jar
---mysql.jar
---iText.jar
---activation.jar

OK, para configurar correctamente el classpath en eclipse vamos al menu Proyect -> Properties -> Java build path, aqui es donde vamos a hacer las configuraciones necesarias, las pestanias son:

Source
Aqui es donde especificamos en donde esta nuestro codigo fuente, aqui podemos especificar las carpetas que querramos, en este caso solo tenemos una, por default eclipse utiliza la carpeta principal, asi que borramos esta, seleccionandola y presionando el boton delete, ahora click sobre el boton Add folder, aparece una ventana donde esta nuestro proyecto, ahi seleccionamos la carpeta src, y aceptamos, cabe mencionar que puedes seleccionar la cantidad de carpetas que tu quieras.

en esta misma pestania hasta el fondo se encuentra una caja de texto cuya etiqueta dice Default output folder, esta opcion es para poder separar el codigo fuente de los archivos compilados, al lado de esta caja hay un boton, lo presionamos y buscamos la carpeta que se llama bin, es bueno mencionar que tu puedes llamarle a esa carpeta como quieras.

Proyects
En realidad yo nunca he usado esta opcion, asi que no puedo comentar al respecto

Libraries
Esta pestania nos permite agregar nuestros archivos JARs que tenemos para nuestro proyecto, ya sean divers de base de datos, herramientas para generar reportes, librerias de struts, etc... aqui lo que hacemos es presionar el boton Add JARs... y buscamos nuestros jars que tenemos en la carpeta lib, lo seleccionamos y aceptamos, asi agregamos todos los que tengamos.

de la misma manera podemos agregar JARs que no tengamos dentro de nuestro proyecto, pero esto lo hacemos presionando el boton Add external JARs..., buscamos nuestro JAR y aceptamos.

Order and export
Aqui podemos ordenar nuestros archivos JAR, con el boton UP y DOWN y podemos elegir cuales queremos exportar.

PUes bien, una vez configurado todo presionamos el boton ok.

have funnnnnnnnnn
  #44 (permalink)  
Antiguo 27/10/2006, 08:50
 
Fecha de Ingreso: octubre-2006
Mensajes: 1
Antigüedad: 18 años
Puntos: 0
Cita:
Iniciado por goncafa Ver Mensaje
Tema: Arreglos
Pregunta: Como puedo declarar un arreglo??
Respuesta:
Los arreglos en Java se tratan como los objetos, es decir, para inicializar un arreglo debes emplear la misma metodologia que usas para iniciar una instancia de una clase

Ejemplo:
Código PHP:
//un arreglo de enteros de 10 posiciones
int arreglo []= new int[10];

//Un arreglo de String bidimencional de 8x8
String nombres[] = new String[8][8]; 
  #45 (permalink)  
Antiguo 04/11/2006, 18:39
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 19 años
Puntos: 7
Tema: General
Pregunta: Necesito generar un identificador único ¿cómo lo hago?
Respuesta: Con la clase UUID.

Los identificadores únicos se reconocen como UUID (Universally Unique IDentifier). La probabilidad de que el identificador que generemos se repita en cualquier otro lugar del mundo es tan baja que es prácticamente despreciable.

Código:
import java.util.UUID;

public class IdentificadorUnico {
	public static void main(String[] args) {
		String uuid = UUID.randomUUID().toString();
		System.out.println(uuid);
	}
}
:)
__________________
El último TipdaR

Última edición por Tipdar; 04/11/2006 a las 18:45
  #46 (permalink)  
Antiguo 13/11/2006, 07:11
Avatar de RafoRaY  
Fecha de Ingreso: diciembre-2005
Mensajes: 42
Antigüedad: 18 años, 10 meses
Puntos: 0
Hola!!
Tengo un aplicativo q se conecta a MySql y funciona bien!!
Pero, cuando genero su archivo ejecutable (.jar) y lo pruebo, este no quiere conectarse, ni siquiera las imagens que coloq los carga !!
Porq?
  #47 (permalink)  
Antiguo 15/12/2006, 19:30
Avatar de ah_puch  
Fecha de Ingreso: agosto-2005
Ubicación: Ecatepec, México
Mensajes: 180
Antigüedad: 19 años, 2 meses
Puntos: 3
Re: FAQ's de Java

tema:Java Principiantes
Pregunta:¿Como usar el Teclado en Modo Consola?
Respuesta: Para Utilizar el teclado en modo consola es nesesario Activar una exepcion de entrada y salida aqui les dejo un pequeño ejemplo del como se hace
Código PHP:
 import java.io.*;
import java.text.*;
import java.lang.*;
import java.util.*;

public class 
teclado {
    public static 
void main(String Args[]){
        
String Captura_Teclado;
        try
        {
            
BufferedReader Teclado = new BufferedReader(new InputStreamReader(System.in));
            
System.out.print("Hola Cual es tu nombre? ");
            
Captura_Teclado Teclado.readLine();
            
System.out.println("Mucho Gusto: " Captura_Teclado);
        
        }catch(
IOException e){System.err.println(e);}
    }    


Cuando hacemos una captura de teclado de modo consola todos los parametros que se resiven son de tipo texto, es decir si quieren realizar operaciones aritmeticas es nesesario que conviertan el valor obtenido a flotante o entero eso se hace de la siguiente manera:


int Mi_Dato_Entero;
float Mi_Dato_Flotante;
Mi_Dato_Entero = Integer.ParseInt(Captura_Teclado);
Mi_Dato_Flotante =Double.ParseInt(Captura_Teclado);
__________________
La programacion no es un trabajo, es un Arte
http://www.purodev.blogspot.com

Última edición por ah_puch; 15/12/2006 a las 19:36
  #48 (permalink)  
Antiguo 16/12/2006, 19:56
Avatar de ah_puch  
Fecha de Ingreso: agosto-2005
Ubicación: Ecatepec, México
Mensajes: 180
Antigüedad: 19 años, 2 meses
Puntos: 3
Re: FAQ's de Java

Tema: Utilerias Para Java
Pregunta:¿Como Crear Un Java Ejecutable?
Respuesta:En el Rato que llevo programando me han preguntado varias veces como convertir un archivo .class de java a . exe bueno para esto existen 2 aplicaciones una se llama JToExe muy buena pero algo dificl de manejar y erxiste otra creada por SUN jamada ExecJava un programa bastante bueno aqui les dejo la url para que descargen el programa.
http://www.javaapis.com/execjava/#Download
__________________
La programacion no es un trabajo, es un Arte
http://www.purodev.blogspot.com
  #49 (permalink)  
Antiguo 22/03/2007, 13:39
 
Fecha de Ingreso: julio-2006
Ubicación: Argentina
Mensajes: 35
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: FAQ's de Java

Tema: Mails.
Pregunta: Como hago para enviar un Mail a GMAIL o Yahoo con JavaMail?
Respuesta: no se puede.
  #50 (permalink)  
Antiguo 15/05/2007, 09:14
 
Fecha de Ingreso: septiembre-2004
Mensajes: 212
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: FAQ's de Java

Tema: Java
Pregunta: Donde puedo leer la informacion oficial de las clases y paquetes
Respuesta:Informacion oficial
__________________
http://trucosinformatica.blogspot.com/
http://rickblogblog.blogspot.com/ el peor problema de facebook
  #51 (permalink)  
Antiguo 28/08/2007, 09:19
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 21 años, 1 mes
Puntos: 4
Re: FAQ's de Java

Tema: Java y MySQL externo
Pregunta: ¿Cómo puedo conectar Java con mi base de datos MySQL que tengo en un servidor externo?
Respuesta: Lo primero de todo es descargarse el MySQL Connector/J. Lo descomprimes y nos quedaremos con el .jar llamado mysql-connector-java-5.0.7-bin.jar (para la versión 5.0.7 del conector) que deberás colocar en una carpeta de tu proyecto o donde tengas la clase que va a usar el conector. Si estas usando algún editor como el JBuilder, Netbeans, eclipse, etc deberás incluirlo como una librería del proyecto. Si compilas a mano deberás incluirla en tu compilación así:
Código:
javac -classpath mysql-connector-java-5.0.7-bin.jar;. MiClase.java
y para ejecutarla:
Código:
java -classpath mysql-connector-java-5.0.7-bin.jar;. MiClase
Un código de ejemplo de MiClase sería:
Código:
import java.sql.*;

class MiClase {
  public static void main(String[] args) {
    try {
      try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
      } catch (ClassNotFoundException ex1) {
        System.out.println("ClassNotFoundException : " + ex1.getMessage());
      } catch (IllegalAccessException ex1) {
        System.out.println("IllegalAccessException : " + ex1.getMessage());
      } catch (InstantiationException ex1) {
        System.out.println("InstantiationException : " + ex1.getMessage());
      }
      String URL =
          "jdbc:mysql://www.midominio.com:3306/nombre_base_datos?user=usuario&password=contrasena";
      Connection conn = DriverManager.getConnection(URL);
      DatabaseMetaData meta = conn.getMetaData();
      System.out.println("El SGBD e s : ");
      System.out.println(meta.getDatabaseProductName());
      System.out.println(meta.getDatabaseProductVersion());
      conn.close();
    } catch (SQLException ex) {
      System.out.println("SQLException : " + ex.getMessage());
      System.out.println("SQLState : " + ex.getSQLState());
      System.out.println("VendorError : " + ex.getErrorCode());
    }
  }
}
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #52 (permalink)  
Antiguo 21/11/2007, 23:11
 
Fecha de Ingreso: noviembre-2007
Mensajes: 19
Antigüedad: 17 años
Puntos: 0
Re: FAQ's de Java

Cita:
Iniciado por stock Ver Mensaje
Tema: Sistema de Archivos
Pregunta: Como leer el contenido de una carpeta?
Como puedo hacer lo mismo pero en forma remota???????
  #53 (permalink)  
Antiguo 27/11/2007, 00:21
 
Fecha de Ingreso: noviembre-2007
Mensajes: 1
Antigüedad: 17 años
Puntos: 0
Re: Tranferir archivos con sockets en java

¿Como se le puede modificar para que corra el servidor en una computadora y el cliente en otra sin que las URLs de los archivos no las busquen el cliente en la computadora cliente y el servidor escriba en la computadora servidor, si no que el cliente busque la URL en la computadora cliente y el servidor escriba en el cliente?, ya que asi como esta el codigo jala bien en una sola computadora, el problema es cuando el cliente y el servidor estan en diferntes
  #54 (permalink)  
Antiguo 04/12/2007, 14:43
 
Fecha de Ingreso: diciembre-2007
Mensajes: 36
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: FAQ's de Java

Como hago un jsp que pida usuario y contraseña, compare lo ingresado con variables almacenadas en mi jsp (o en una base de datos) y muestre una pagina de "bievenida" o una de "Usuario invalido" segun sea el caso?
  #55 (permalink)  
Antiguo 09/04/2008, 07:33
 
Fecha de Ingreso: abril-2008
Mensajes: 3
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: FAQ's de Java

Cita:
Iniciado por goncafa Ver Mensaje
Bueno, este es un tema que ya hacia tiempo le venia faltando a este foro, asi que aqui da inicio lo que seran la FAQ's de Java, que debemos ir armando entre todos, y siguiendo el mismo esuqema que los demas foros, es decir.

Tema: Tema
Pregunta: Pregunta?
Respuesta: Respuesta
Ejemplo:
ejemplo

Donde el ejemplo si lo necesita siempre demos ponerlo entre los bloques [ PHP ] y [ /PHP ] lo que provoca que el codigo se coloree y podamos darle formato y sea mucho mas entendible

IMPORTANTE: Al poner nuevas FAQ's usen un mensaje nuevo para cada pregunta, no pongas mas de un FAQ por mensaje, pues si tenemos distribuidas las FAQ's en mensajes induviduales despues podremos hacer facilmente un indice para encontrar las respuestas mas rapido.

vamos, armemos entre todos las FAQ´s

Saludos
  #56 (permalink)  
Antiguo 09/04/2008, 07:34
 
Fecha de Ingreso: abril-2008
Mensajes: 3
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: FAQ's de Java

HOLA MI CORREO ES [email protected] y me gustaria que me explicaras como va esto que dices tu . chao
melissa
  #57 (permalink)  
Antiguo 25/04/2008, 04:07
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: FAQ's de Java

Hola people!!! Me gustaria saber como se comparan Templates en java, por ejemplo para decir que algo es mayor o menor que.... porque para decir que es igual es sencillo, con la funcion equals() no hay ningun problema, pero para lo otro la verdad es que no lo se... si me echais un cable....

Thankius!!!!
  #58 (permalink)  
Antiguo 05/05/2008, 15:08
 
Fecha de Ingreso: mayo-2008
Mensajes: 1
Antigüedad: 16 años, 5 meses
Puntos: 0
De acuerdo Re: FAQ's de Java

disculpen necesito su ayuda, alguien que me pudiese hacer el favor de colaborarme con un programa java que pueda enviar un archivo puede ser de texto unicamente pero de forma anonima "enrutamiento anonimo", como seria este proceso? no tengo mucho conocimiento de java, agradeciendo su colaborazon gracias de antemano soy nuevo en esto
  #59 (permalink)  
Antiguo 12/05/2008, 08:53
 
Fecha de Ingreso: mayo-2008
Mensajes: 1
Antigüedad: 16 años, 5 meses
Puntos: 0
Arboles AVL

Weno, quisiera que me ayudaran con arboles avl

Última edición por AngelSandoval; 12/05/2008 a las 09:06 Razón: Error :(
  #60 (permalink)  
Antiguo 12/05/2008, 14:45
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 16 años, 5 meses
Puntos: 2
Re: FAQ's de Java

Tema: NET y Coneccion a BD
Pregunta: Acceso a datos con un jndi?
Respuesta: un jndi es un metodo de tener acceso a bases de datos mucho mas rapido que con un acceso jdbc tradicional.

Si estamos trabajando con una Web application lo primero que debemos hacer es lo siguiente en el archivo web.xml
Código PHP:
<resource-ref>
      <
description>coneccion_prueba</description>
      <
res-ref-name>jdbc/mysql</res-ref-name>
      <
res-type>javax.sql.DataSource</res-type>
      <
res-auth>Container</res-auth>
      <
res-sharing-scope>Shareable</res-sharing-scope>
  </
resource-ref
lo siguiente es crear un archivo Content.xml dentro de la carpeta META-INF y dentro de este archivo poner
Código PHP:
<?xml version="1.0" encoding="UTF-8"?>
     <Context path="/prueba" docBase="/home/lino/sitios_web/prueba" reloadable="true">
         <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" maxActive="50" maxIdle="5" maxWait="20000" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/database"/>
      </Context>
donde docBase es el directorio de la aplicacion, asi mismo password y user son los datos para autentificarse en la BD.

En este punto se debe instalar el archivo .jar del mysql-connector en el lib de la aplicacion dentro de WEB-INF y de estar usando tomcat tambien en el lib de tomcat asi mismo se debe declarar en el Classpath el mysql-connector.

una vez todo configurado.

puedes hacer la siguiente aplicacion.

se crea una clase estatica que llamaremos ConnectionFactory.java
Código PHP:
import java.sql.*;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class 
ConnectionFactory {
  private static 
String jndi="jdbc/mysql";

  public static 
Connection getConnection() throws SQLException{
   
Connection conn=null;
   try{
     
InitialContext ini = new InitialContext();                                                                             
     
DataSource ds = (DataSourceini.lookup(jndi);                         
     
conn ds.getConnection();                                             
    }catch(
Exception e){
      
e.printStackTrace();
      throw new 
SQLException(e.getMessage());                                  
    }
    return 
conn;
  }
  
  public static 
void closeConnection(Connection connthrows SQLException{
    try{
     if(
conn!=null && !conn.isClosed()){
       
conn.close();
     }
    }catch(
SQLException e){
      
e.printStackTrace();
    }
  }

y en cualquier aplicacion invocar esta clase por ejemplo.

Código PHP:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class 
Consulta {

    public 
Consulta(){}
    
    public 
boolean isValidCP(String postalCodethrows Exception{
        
Connection con=null;
        
PreparedStatement ps=null;
        
ResultSet rs=null;
        
boolean isValid=false;
        
        
String query="select CodigoPos from CodigosPostales where CodigoPos=?";
        
        try{
          
con=ConnectionFactory.getConnection();
          
ps=con.prepareStatement(query);
          
ps.setString(1,postalCode);
          
rs=ps.executeQuery();
          if(
rs.next()){
              
isValid=true;
          }
        }catch(
Exception e){
          throw new 
Exception("[isValid]"+e.getMessage());
        }
finally{
          if(
rs!=null){
               
rs.close();
          }if(
ps!=null){
              
ps.close();
          }
          
ConnectionFactory.closeConnection(con);
        }
        return 
isValid;
    }

Listo.

el principio de la sabiduria es el respeto y amor a Dios.

Etiquetas: faq
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 33 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 08:03.