Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - klaine

#71
Java / Re: [Threads] wait() y notify()
18 Junio 2011, 07:51 AM
Los metodos wait() y notify() en verdad no me funkan como los estoi usando, por eso pregunto como hacerlo, entiendo que trates asi a gente que no lee pero he leido bastante y no entiendo nada, de verdad agradecere sus comentarios.

Saludos  ;)
#72
Cuando tienes la instancia de la clase String puedes usar el metodo toUpperCase() que retorna el String en mayusculas, para contar las palabras por espacios puedes usar el metodo split de la clase String asi:

String[] palabras=cadena_original.split(" ");

int cantidad_palabras = palabras.length;

Saludos
#73
Java / Re: Ayuda JComboBox...
17 Junio 2011, 02:07 AM
En el evento usa removeItem() del combobox en el evento

Saludos  ;)
#74
Java / [Threads] wait() y notify()
14 Junio 2011, 23:43 PM
Buenas, me gustaria saber si existe alguna documentacion para seres humanos de como se usan los hilos en java xD, en teoria, se instancia un Thread y en el constructor se le pasa una nueva instancia de Runnable() sobreescribiendo el metodo run(), para iniciarlo se llama al metodo start(), suponiendo que el metodo run() ejecuta un bloque de codigo infinito (digamos un while(true) { ... } ) tendriamos un proceso llamado hilo que acompañaría a nuestro programa principal sin que este espere el return del metodo run(), ahora bien, si dentro de mi programa principal accedo al objeto que contiene el hilo y llamo al metodo suspend(); el metodo se detiene, si llamo a resume(); el hilo continua su ejecucion, mi gran duda es:

1) ¿Por que al llamar al Object.wait(); en vez de suspend(); no se produce la pausa, sino que espera alrededor de un segundo y continua?

y (Aunque es un poko obvio, sabiendo que no se produce la pausa)

2) ¿Por que al llamar al Object.notify(); me suelta IllegalMonitorStateException, siendo que anteriormente (supuestamente) se provocó una pausa en el hilo con wait();?


He buscado y he leído varias cosas pero lo uniko que consegui entender fue esto  :P, imaginate un mono tratando de descubir para que funciona una rueda, asi me siento xD.

De antemano, gracias  :D

Saludos  ;)

PD: dejo un ejemplo de lo que prové (la interface grafica la hice con un ide asi que la omitire)

Código (java) [Seleccionar]


public class hilo{

volatile int c=0;

Thread t=null;

public hilo(){

init_hilo();

}

public void init_hilo(){

t=new Thread(new Runnable(){

public void run(){

while(true){

c++;
System.out.println(c);

}

}

});

}

public static void main(String[] args){

new hilo();

try{

t.wait();

t.notify();

//si uso suspend(); y resume(); no me da problemas =/

}catch(InterruptedException ex){

}

}

}


#75
No quisiera pensar que cada vez que llamas a un metodo de esa clase vuelves a instanciar la clase  :rolleyes:

Dime que no estas haciendo esto:

new Gui().metodo();

new Gui().metodo();

Nah, debo estar empezando a hablar estupideces  :xD

Saludos
#76
Aprovecho de promocionar mi foro  :D (ya que casi nadie lo visita u.u), quizas estos temas respondan un poko tus dudas:

[Estructura de la clase y los metodos]

Concepto de Objeto

Saludos   ;)
#77
Para leer un archivo:

BufferedReader b = new BufferedReader(new FileReader(new File("ruta")));

Con b.readline lees cada linea del archivo, te devolverá null cuando no haya más que leer, para dividir:

String[] div = variable.split("|");

Despues recorres cada variable de ese arreglo, investiga como usar un for each.

Si quieres ese arreglo como numeros crea un arreglo int del mismo largo que la cadena dividida:

int[] arr=new int[div.length];

luego metes el contenido de div en el arreglo de enteros parseandolo:
te dejo un ejemplo del for each
Código (java) [Seleccionar]

int x=0;

for(String valor:div){

arr[x] = Integer.parseInt(valor);
x++;

}


Saludos  ;)
#78
Sry me faltó decir que la razón por la que quiero modificar un archivo dentro de un jar es porque este programa escribe mis direcciones en archivo de texto plano, el contenido es como sigue:

url#user#pass

Entonces después lo lee con un buffereredreader y lo divide con String.split("#")
Con eso creo los archivos ya mencionados, investigaré sobre la clase robot, no la conocía, gracias, pero ahora lo que necesito es eso de modificar el txt que esté dentro del jar (si hay otra opcion, bienvenida sea).

Saludos y gracias por vuestra ayuda  ;)
#79
Intentaba hacer un programa que me logeara en paginas, resolví hacerlo de la siguiente forma:

> Un método que escribe archivos, lo uso para escribir un vbs que envíe pulsaciones de teclas, como no supe llamar al vbs desde java resolvi usar este mismo metodo para escribir un bat que llame al vbs y le pase los argumentos con cscript

> Un metodo que reciba los argumentos necesarios para escribir el bat y que llame al vbs

> Esop, el resto lo hace el vbs, luego de abrir el navegador con la url especificada, muestra un msgbox y cuando se le da aceptar espera tres segundos y envía las pulsaciones de teclas.

Dejo el code de los métodos que uso, dejaría el code completo pero la gui la hice en netbeans, ya no me da el ánimo para codear en bloc de notas Xd

para escribir un archivo:

Código (java) [Seleccionar]

void writer(String[] args, String file, boolean rewrite, boolean delete_on_exit){

        /**
         *
         * El primer argumento indica
         * las palabras que se agregaran al archivo de
         * texto plano.
         *
         * El segundo argumento indica la ruta de
         * dicho archivo.
         *
         * Si el tercer argumento
         * es true el archivo
         * se sobreescribe
         *
         * Si el cuarto argumento es true
         * el archivo se borra al cerrar
         * el programa
         *
         *
         */

    String[] in=this.reader(file).split("\n");

    Writer w=new Writer(file, delete_on_exit);

    if(rewrite){

        w.touch();

    }else{

    for(String val:in){

        w.write(val);

    }

    }

    for(String val:args){

        w.write(val);

    }

    w.close();

    }



Y la clase writer:

Código (java) [Seleccionar]

class Writer {

    java.io.BufferedWriter bw;

    String file="";

    Writer(String foo, boolean delete){

        this.file=foo;

        try{

            File f = new File(this.file);

            if(delete){

            f.deleteOnExit();

            }

            bw=new BufferedWriter(new FileWriter(f));

        }catch(IOException ex){

        }
    }

    public void write(String line){

        try{

        bw.append(line);

        bw.newLine();

        }catch (IOException ex) {

            ex.printStackTrace();

        }

        }



    public void touch(){

       

        File f = new File(this.file);

        try{

            if(f.exists()){
            f.delete();
            f.createNewFile();
            }else{
            f.createNewFile();
            }

        }catch(IOException c){

        }

    }

    public void touch(String foo){

        try{

            File fi= new File(foo);

            if(fi.exists()){

                fi.delete();
                fi.createNewFile();

            }else{

                fi.createNewFile();

            }

        }catch(IOException c){

        }

    }

public void close(){

    try{

        this.bw.close();

    }catch(IOException ex){

    }

}

}


El vbs, este no cambia

Código (vb) [Seleccionar]


set wss=createobject("wscript.shell")
dim com
com=""""
wss.run("cmd /c start " + com + com + " " + wscript.arguments(0))
msgbox "pulsa aceptar para logear"
wscript.sleep 3000
wss.sendkeys wscript.arguments(1)
wscript.sleep 200
wss.sendkeys "{tab}"
wscript.sleep 200
wss.sendkeys wscript.arguments(2)




El bat, este se escribe con el método writer de java:

Código (dos) [Seleccionar]


@echo off
cscript /nologo "C:\Users\Zero\desktop\temp.vbs" "http://foro.elhacker.net/login.html" "user" "pass"




El metodo que llama al writer y escribe el bat (no recuerdo si fue este es que lo hice varias veces)

Código (java) [Seleccionar]


public void cscript(String[] args, String vbs) {

        String temp = "";

        if (new File(System.getProperty("user.home") + "\\desktop").isDirectory()) {

            temp = System.getProperty("user.home") + "\\desktop\\temp.bat";

        } else if (new File(System.getProperty("user.home") + "\\escritorio").isDirectory()) {

            temp = System.getProperty("user.home") + "\\escritorio\\temp.bat";

        } else {

            temp = JOptionPane.showInputDialog("Dame el path de tu escritorio");

        }

        String args2 = "";

        for (String val : args) {

            args2 += " " + "\"" + val + "\"";

        }

        String com = "\"";

        String[] bat = {"@echo off", "cscript /nologo " + com + vbs + com + args2};

        this.writer(bat, temp, true, true);

        try {

            Runtime.getRuntime().exec("cmd /c " + temp);

        } catch (IOException ex) {
        }



    }



Y bueno, el programa me salió, pero dependo mucho de estos archivos temporales, si hay otra solución sería genial, desde ya gracias por leer este tema.

Saludos  ;)
#80
Buenas, tengo el siguiente problema con los archivos.jar

¿Como podría modificar los archivos que están compresos en el mismo jar con una aplicacion en java?

Por ejemplo, tengo mi archivo.class en una carpeta, en esa misma carpeta tengo una carpeta con archivos *.txt y la carpeta con el manifest, ok si compilo y ejecuto a nivel de linea de comandos puedo modificar el contenido de cualquier archivo.txt que esté en dicha carpeta, ahora bien, si comprimo y ejecuto el ejecutable.jar al tratar de trabajar con el directorio actual me toma el directorio donde está el .jar y no el directorio que está dentro del .jar, entonces mi duda es: ¿se puede trabajar con los archivos que están compresos dentro del .jar? ¿como?

No quisiera llegar a tener que depender de archivos externos  :-\

De antemano, gracias  :D

Saludos  ;)