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 - kinos

#81
Java / Re: Filtrar archivos dentro de un jar ¿?
22 Agosto 2009, 20:21 PM
Holas, he encontrado esto. Me parece que lo que hace es listar los archivos contenidos en un jar. Espero que te sirva. Luego supongo que lo podrás filtrar por extensión como estas haciendo.

Código (java) [Seleccionar]

import java.util.jar.*;
import java.util.*;
import java.io.*;

public class PackageUtils {

private static boolean debug = true;

public static List getClasseNamesInPackage
     (String jarName, String packageName){
   ArrayList classes = new ArrayList ();

   packageName = packageName.replaceAll("\\." , "/");
   if (debug) System.out.println
        ("Jar " + jarName + " looking for " + packageName);
   try{
     JarInputStream jarFile = new JarInputStream
        (new FileInputStream (jarName));
     JarEntry jarEntry;

     while(true) {
       jarEntry=jarFile.getNextJarEntry ();
       if(jarEntry == null){
         break;
       }
       if((jarEntry.getName ().startsWith (packageName)) &&
            (jarEntry.getName ().endsWith (".class")) ) {
         if (debug) System.out.println
           ("Found " + jarEntry.getName().replaceAll("/", "\\."));
         classes.add (jarEntry.getName().replaceAll("/", "\\."));
       }
     }
   }
   catch( Exception e){
     e.printStackTrace ();
   }
   return classes;
}

/**
*
*/
  public static void main (String[] args){
   List list =  PackageUtils.getClasseNamesInPackage
        ("C:/j2sdk1.4.1_02/lib/mail.jar", "com.sun.mail.handlers");
   System.out.println(list);
   /*
   output :
   
    Jar C:/j2sdk1.4.1_02/lib/mail.jar looking for com/sun/mail/handlers
    Found com.sun.mail.handlers.text_html.class
    Found com.sun.mail.handlers.text_plain.class
    Found com.sun.mail.handlers.text_xml.class
    Found com.sun.mail.handlers.image_gif.class
    Found com.sun.mail.handlers.image_jpeg.class
    Found com.sun.mail.handlers.multipart_mixed.class
    Found com.sun.mail.handlers.message_rfc822.class
    [com.sun.mail.handlers.text_html.class,
    com.sun.mail.handlers.text_xml.class,  com
    .sun.mail.handlers.image_jpeg.class,
    , com.sun.mail.handlers.message_rfc822.class]
   
   */
  }
}

#82
¿Cómo se puede obtener el espacio libre del disco duro donde se ejecuta la aplicación?

He probado con esto pero nosé si es correcto:

Código (java) [Seleccionar]

package memoria;
import java.lang.management.MemoryMXBean;
import java.lang.management.ManagementFactory;

public class Main {

   public static void main(String[] args) {
       Main apli = new Main();
       apli.estadoMemoria();
   }

   public void estadoMemoria() {
       Runtime runtime = Runtime.getRuntime();

       long freeMemory = runtime.freeMemory();
       long totalMemory = runtime.totalMemory();
       long maxMemory = runtime.maxMemory();

       System.out.println("Max   Memory  :" + (maxMemory / 1024.0) + " KB");
       System.out.println("Total Memory  :" + (totalMemory / 1024.0) + " KB");
       System.out.println("Free  Memory  :" + (freeMemory / 1024.0) + " KB");
       System.out.println("Used  Memory  :" + (totalMemory / 1024.0 - freeMemory / 1024.0) + " KB");
       
       System.out.println("         ===============         ");
       MemoryMXBean mx = ManagementFactory.getMemoryMXBean();

       long initMemory = mx.getHeapMemoryUsage().getInit() + mx.getNonHeapMemoryUsage().getInit();
       long usedMemory = mx.getHeapMemoryUsage().getUsed() + mx.getNonHeapMemoryUsage().getUsed();
       long committedMemory = mx.getHeapMemoryUsage().getCommitted() + mx.getNonHeapMemoryUsage().getCommitted();
       long _maxMemory = mx.getHeapMemoryUsage().getMax() + mx.getNonHeapMemoryUsage().getMax();

       System.out.println("Max       memory:" + (_maxMemory / 1024.0) + " KB");
       System.out.println("Committed memory:" + (committedMemory / 1024.0) + " KB");
       System.out.println("Init      memory:" + (initMemory / 1024.0) + " KB");
       System.out.println("Used      memory:" + (usedMemory / 1024.0) + " KB");

   }
}


Me ha reportado estos datos:

Citar
Max   Memory  :499008.0 KB
Total Memory  :32384.0 KB
Free  Memory  :32167.6015625 KB
Used  Memory  :216.3984375 KB
        ===============        
Max       memory:679232.0 KB
Committed memory:51072.0 KB
Init      memory:51067.0 KB
Used      memory:2695.0234375 KB

Cuantos gigas libres tengo en el disco duro? con el editor de particiones e mirado y tengo 49.54 GiB y según este programa dice... "Free Memory :32167.6015625 KB"



Código corregido:
Código (java) [Seleccionar]

package memoria;
import java.lang.management.MemoryMXBean;
import java.lang.management.ManagementFactory;
import java.io.File;

public class Main {

    public static void main(String[] args) {
        Main apli = new Main();
        apli.estadoMemoriaHeap();
        apli.estadoMemoriaDiscoDuro();
    }
   
    //estadisticas de la memoria del heap
    public void estadoMemoriaHeap() {
        Runtime runtime = Runtime.getRuntime();

        long freeMemory = runtime.freeMemory();
        long totalMemory = runtime.totalMemory();
        long maxMemory = runtime.maxMemory();
       
        System.out.println("\nEstadoMemoriaHeap():");
        System.out.println("Max   Memory  :" + (maxMemory / 1024.0) + " KB");
        System.out.println("Total Memory  :" + (totalMemory / 1024.0) + " KB");
        System.out.println("Free  Memory  :" + (freeMemory / 1024.0) + " KB");
        System.out.println("Used  Memory  :" + (totalMemory / 1024.0 - freeMemory / 1024.0) + " KB");
         
        System.out.println("         ===============         ");
        MemoryMXBean mx = ManagementFactory.getMemoryMXBean();

        long initMemory = mx.getHeapMemoryUsage().getInit() + mx.getNonHeapMemoryUsage().getInit();
        long usedMemory = mx.getHeapMemoryUsage().getUsed() + mx.getNonHeapMemoryUsage().getUsed();
        long committedMemory = mx.getHeapMemoryUsage().getCommitted() + mx.getNonHeapMemoryUsage().getCommitted();
        long _maxMemory = mx.getHeapMemoryUsage().getMax() + mx.getNonHeapMemoryUsage().getMax();

        System.out.println("Max       memory:" + (_maxMemory / 1024.0) + " KB");
        System.out.println("Committed memory:" + (committedMemory / 1024.0) + " KB");
        System.out.println("Init      memory:" + (initMemory / 1024.0) + " KB");
        System.out.println("Used      memory:" + (usedMemory / 1024.0) + " KB");

    }
    //estadisticas de la memoria del disco duro
    public void estadoMemoriaDiscoDuro(){
       
        File file = new File("/");
        long totalSpace = file.getTotalSpace();
        long freeSpace = file.getFreeSpace();
        long UsableSpace = file.getUsableSpace();
       
        System.out.println("\nEstadoMemoriaDiscoDuro():");
        System.out.println("Total Space  :" + (totalSpace / 1024.0) + " KB");
        System.out.println("Free  Space  :" + (freeSpace / 1024.0) + " KB");
        System.out.println("Usable  Space  :" + (UsableSpace / 1024.0) + " KB");
    }
}


El método getUsableSpace() no es muy aproximado, mejor hacer la resta como dice Darhius.

Gracias por contestar a todos  ;-)
#83
Java / Re: ayuda
13 Agosto 2009, 01:08 AM
Tron... te falta alguna "h" y el nombre del método.

Citarpublic class NewClass{

static FileOutputStream istro;
public static final int longLinea=81;

public static void (String args[]) trows IOException {
byte nombre[]=new byte[longLinea];

se escribe así:  ;D

Código (java) [Seleccionar]

public class NewClass{

static FileOutputStream istro;
public static final int longLinea=81;

public static void caca(String args[]) throws IOException {
byte nombre[]=new byte[longLinea];
byte apellidos[]=new byte[longLinea];


Añadele también el main para que la puedas comprobar. Suerte
#84
Java / Re: ayuda con este ejercicio
13 Agosto 2009, 00:14 AM
Hola, pon los imports y el código entre sus etiquetas de codigo por favor.
Explica que te ocurre vaquero jeje  ::)
#85
Gracias.

He mirado y con el netbeans viene uno que se llama "OK / CANCEL dialog sample form" que sale cuando le das boton derecho New, Categories--> Swing GUI Forms

Con ese si lo modifico creo que me servirá, extiende de JDialog.
#86
Lo que quiero hacer es que cuando pulses en un JItem de un JMenu se me abra una ventanita con las opciones de configuración de la aplicación y ésta no pueda utilizarse hasta que no se cierre la ventanita de configuración.
El caso... es que nosé que objeto debo utilizar... puede ser un JDialog? :silbar:
#87
ahm gracias, pero he cambiado ya el jTextPane por el jTextArea y funciona bien. Ahora el problema que le veo es que no debe de ser un objeto sincronizado entonces un proceso escribe en un trozo de la línea y otro en otro trozo (según duerman los procesos o despierten). Pero vaya eso sólo pasa ha veces y tapoco es muy importante ahora mismo.
Esto con el jTextPane no me pasaba.

Bueno... creo que se podría solucionar extendiendo de la clase jTextArea y sobreescribiendo el método para escribir poniendole synchronized. Así no se pisaran los procesos.
#88
Si lo que quiero hacer es muy parecido ha eso, unicamente le puse colores y le cambié el tamaño de la letra y la fuente.
¿Con el jTextArea no me ocurrirá los mismo? es que cambias el puntero cuando un proceso escribe no... y eso es quizas lo que le ocurre... que si seleccionas al mismo tiempo...
¿Tienes ese ejemplo por ahi para probar?
#89
CitarmiJTextPane.setText("Hola foro.elhacker.net");
miJTextPane.setDisabledTextColor(new Color(0, 0, 0));
miJTextPane.setEnabled(false);

Eso me vendría genial si pudiese cambiarle el fondo también. Ya que me evita que se bloquee la aplicación.

Lo que hace el programa es que varios hilos van escribiendo en la pantalla (jTextPane). Pero como hagas click en el jTextPane la hemos cagao...

mmm igual podía hacer que cuando llegue a tener un número determinado de filas, que elimine la primera.
#90
Sabeis cómo puedo limitar el número de lineas que se pueden ir escribiendo en un JTextPane como si se tratase de una Shell?

Un problema que tengo también es que mi programa va escribiendo en el JTextPane constantemente pero cuando seleccionas algo de texto dentro mientras esta funcionando se queda colgao.
¿Sabeis que puedo hacer?

He probado así --> miJTextPane.setEnabled(false);

Funciona bien pero al estar deshabilitado se ve el texto en grises y el color de fondo en blanco y pierde la gracia. Si tuviese los colores y funcionase igual estaría bien.