elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  obtener el espacio libre del disco duro donde se ejecuta la aplicación
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: obtener el espacio libre del disco duro donde se ejecuta la aplicación  (Leído 8,741 veces)
kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
obtener el espacio libre del disco duro donde se ejecuta la aplicación
« en: 21 Agosto 2009, 21:18 pm »

¿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
  1. package memoria;
  2. import java.lang.management.MemoryMXBean;
  3. import java.lang.management.ManagementFactory;
  4.  
  5. public class Main {
  6.  
  7.    public static void main(String[] args) {
  8.        Main apli = new Main();
  9.        apli.estadoMemoria();
  10.    }
  11.  
  12.    public void estadoMemoria() {
  13.        Runtime runtime = Runtime.getRuntime();
  14.  
  15.        long freeMemory = runtime.freeMemory();
  16.        long totalMemory = runtime.totalMemory();
  17.        long maxMemory = runtime.maxMemory();
  18.  
  19.        System.out.println("Max   Memory  :" + (maxMemory / 1024.0) + " KB");
  20.        System.out.println("Total Memory  :" + (totalMemory / 1024.0) + " KB");
  21.        System.out.println("Free  Memory  :" + (freeMemory / 1024.0) + " KB");
  22.        System.out.println("Used  Memory  :" + (totalMemory / 1024.0 - freeMemory / 1024.0) + " KB");
  23.  
  24.        System.out.println("         ===============         ");
  25.        MemoryMXBean mx = ManagementFactory.getMemoryMXBean();
  26.  
  27.        long initMemory = mx.getHeapMemoryUsage().getInit() + mx.getNonHeapMemoryUsage().getInit();
  28.        long usedMemory = mx.getHeapMemoryUsage().getUsed() + mx.getNonHeapMemoryUsage().getUsed();
  29.        long committedMemory = mx.getHeapMemoryUsage().getCommitted() + mx.getNonHeapMemoryUsage().getCommitted();
  30.        long _maxMemory = mx.getHeapMemoryUsage().getMax() + mx.getNonHeapMemoryUsage().getMax();
  31.  
  32.        System.out.println("Max       memory:" + (_maxMemory / 1024.0) + " KB");
  33.        System.out.println("Committed memory:" + (committedMemory / 1024.0) + " KB");
  34.        System.out.println("Init      memory:" + (initMemory / 1024.0) + " KB");
  35.        System.out.println("Used      memory:" + (usedMemory / 1024.0) + " KB");
  36.  
  37.    }
  38. }
  39.  

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
  1. package memoria;
  2. import java.lang.management.MemoryMXBean;
  3. import java.lang.management.ManagementFactory;
  4. import java.io.File;
  5.  
  6. public class Main {
  7.  
  8.    public static void main(String[] args) {
  9.        Main apli = new Main();
  10.        apli.estadoMemoriaHeap();
  11.        apli.estadoMemoriaDiscoDuro();
  12.    }
  13.  
  14.    //estadisticas de la memoria del heap
  15.    public void estadoMemoriaHeap() {
  16.        Runtime runtime = Runtime.getRuntime();
  17.  
  18.        long freeMemory = runtime.freeMemory();
  19.        long totalMemory = runtime.totalMemory();
  20.        long maxMemory = runtime.maxMemory();
  21.  
  22.        System.out.println("\nEstadoMemoriaHeap():");
  23.        System.out.println("Max   Memory  :" + (maxMemory / 1024.0) + " KB");
  24.        System.out.println("Total Memory  :" + (totalMemory / 1024.0) + " KB");
  25.        System.out.println("Free  Memory  :" + (freeMemory / 1024.0) + " KB");
  26.        System.out.println("Used  Memory  :" + (totalMemory / 1024.0 - freeMemory / 1024.0) + " KB");
  27.  
  28.        System.out.println("         ===============         ");
  29.        MemoryMXBean mx = ManagementFactory.getMemoryMXBean();
  30.  
  31.        long initMemory = mx.getHeapMemoryUsage().getInit() + mx.getNonHeapMemoryUsage().getInit();
  32.        long usedMemory = mx.getHeapMemoryUsage().getUsed() + mx.getNonHeapMemoryUsage().getUsed();
  33.        long committedMemory = mx.getHeapMemoryUsage().getCommitted() + mx.getNonHeapMemoryUsage().getCommitted();
  34.        long _maxMemory = mx.getHeapMemoryUsage().getMax() + mx.getNonHeapMemoryUsage().getMax();
  35.  
  36.        System.out.println("Max       memory:" + (_maxMemory / 1024.0) + " KB");
  37.        System.out.println("Committed memory:" + (committedMemory / 1024.0) + " KB");
  38.        System.out.println("Init      memory:" + (initMemory / 1024.0) + " KB");
  39.        System.out.println("Used      memory:" + (usedMemory / 1024.0) + " KB");
  40.  
  41.    }
  42.    //estadisticas de la memoria del disco duro
  43.    public void estadoMemoriaDiscoDuro(){
  44.  
  45.        File file = new File("/");
  46.        long totalSpace = file.getTotalSpace();
  47.        long freeSpace = file.getFreeSpace();
  48.        long UsableSpace = file.getUsableSpace();
  49.  
  50.        System.out.println("\nEstadoMemoriaDiscoDuro():");
  51.        System.out.println("Total Space  :" + (totalSpace / 1024.0) + " KB");
  52.        System.out.println("Free  Space  :" + (freeSpace / 1024.0) + " KB");
  53.        System.out.println("Usable  Space  :" + (UsableSpace / 1024.0) + " KB");
  54.    }
  55. }
  56.  

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

Gracias por contestar a todos  ;-)


« Última modificación: 22 Agosto 2009, 00:22 am por kinos » En línea

-Ramc-


Desconectado Desconectado

Mensajes: 495



Ver Perfil
Re: obtener el espacio libre del disco duro donde se ejecuta la aplicación
« Respuesta #1 en: 21 Agosto 2009, 22:40 pm »

No he probado ese método que propones, pero, desde la JSE6 se puede, mira en el api, la clase File en java.io.

Los métodos:
Código:
     public long getTotalSpace();
     public long getFreeSpace();
     public long getUsableSpace();


« Última modificación: 21 Agosto 2009, 22:42 pm por -Ramc- » En línea


Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: obtener el espacio libre del disco duro donde se ejecuta la aplicación
« Respuesta #2 en: 21 Agosto 2009, 22:47 pm »

¿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
  1. package memoria;
  2. import java.lang.management.MemoryMXBean;
  3. import java.lang.management.ManagementFactory;
  4.  
  5. public class Main {
  6.  
  7.    public static void main(String[] args) {
  8.        Main apli = new Main();
  9.        apli.estadoMemoria();
  10.    }
  11.  
  12.    public void estadoMemoria() {
  13.        Runtime runtime = Runtime.getRuntime();
  14.  
  15.        long freeMemory = runtime.freeMemory();
  16.        long totalMemory = runtime.totalMemory();
  17.        long maxMemory = runtime.maxMemory();
  18.  
  19.        System.out.println("Max   Memory  :" + (maxMemory / 1024.0) + " KB");
  20.        System.out.println("Total Memory  :" + (totalMemory / 1024.0) + " KB");
  21.        System.out.println("Free  Memory  :" + (freeMemory / 1024.0) + " KB");
  22.        System.out.println("Used  Memory  :" + (totalMemory / 1024.0 - freeMemory / 1024.0) + " KB");
  23.  
  24.        System.out.println("         ===============         ");
  25.        MemoryMXBean mx = ManagementFactory.getMemoryMXBean();
  26.  
  27.        long initMemory = mx.getHeapMemoryUsage().getInit() + mx.getNonHeapMemoryUsage().getInit();
  28.        long usedMemory = mx.getHeapMemoryUsage().getUsed() + mx.getNonHeapMemoryUsage().getUsed();
  29.        long committedMemory = mx.getHeapMemoryUsage().getCommitted() + mx.getNonHeapMemoryUsage().getCommitted();
  30.        long _maxMemory = mx.getHeapMemoryUsage().getMax() + mx.getNonHeapMemoryUsage().getMax();
  31.  
  32.        System.out.println("Max       memory:" + (_maxMemory / 1024.0) + " KB");
  33.        System.out.println("Committed memory:" + (committedMemory / 1024.0) + " KB");
  34.        System.out.println("Init      memory:" + (initMemory / 1024.0) + " KB");
  35.        System.out.println("Used      memory:" + (usedMemory / 1024.0) + " KB");
  36.  
  37.    }
  38. }
  39.  

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"
los metodos de obetenciond e datos sobre la memoria de la cakse runtime, deveuelven las estadisticas de la memoria del heap (un sector de la ram, que usa java para ejecutarse)

Saludos
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: obtener el espacio libre del disco duro donde se ejecuta la aplicación
« Respuesta #3 en: 21 Agosto 2009, 23:16 pm »

Cierto -Ramc- y Debci ambos tienen razon  ;D

Puedes intentar algo asi.

Código
  1. import java.io.*;
  2.  
  3. public class discoDuro {
  4.  
  5.    public static void main(String[] args) {
  6.         new discoDuro();
  7.    }
  8.  
  9.    public discoDuro()
  10.    {
  11.     estadoDiscoDuro();
  12.    }
  13.  
  14.    public void estadoDiscoDuro() {
  15.        File drive = new File("C:\\");
  16. long espacioTotal = drive.getTotalSpace();
  17. long espacioLibre = drive.getFreeSpace();
  18. System.out.println("Espacio Total: " +espacioTotal +" kB = " +espacioTotal/1073741824 +" GB");
  19. System.out.println("Espacio Libre: " +espacioLibre +" kB = " +espacioLibre/1073741824 +" GB");
  20.    }
  21. }

para calcular el espacio usado puedes usar el método o calcularlo mediante una resta.


Saludos
« Última modificación: 18 Mayo 2010, 16:26 pm por Darhius » En línea

abc
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: obtener el espacio libre del disco duro donde se ejecuta la aplicación
« Respuesta #4 en: 22 Agosto 2009, 17:13 pm »

mm no lo habia pensado... esta bien jeje, lo añadiré a mi paquete de clases.

Saludos
En línea

goldenfalc

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: obtener el espacio libre del disco duro donde se ejecuta la aplicación
« Respuesta #5 en: 18 Mayo 2010, 12:32 pm »

Que bueno el post de verdad me habeis salvado gracias
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como formatear el espacio libre en windows 7
Windows
flamacore 3 5,538 Último mensaje 30 Diciembre 2010, 22:09 pm
por Randomize
Porgrama libre para monitorar espacio universal.
GNU/Linux
portaro 1 1,928 Último mensaje 29 Julio 2011, 22:55 pm
por ^DeMoN^
Aplicación de vb6 se ejecuta sin 'problemas'? « 1 2 »
Programación Visual Basic
.:Weeds:. 10 5,603 Último mensaje 8 Julio 2013, 08:56 am
por engel lex
Aplicacion no se ejecuta
Windows
angel_rdzm 7 3,856 Último mensaje 6 Junio 2015, 16:31 pm
por angel_rdzm
Obtener el nombre de la función que ejecuta un hilo.
.NET (C#, VB.NET, ASP)
El Benjo 7 4,793 Último mensaje 19 Febrero 2016, 06:22 am
por El Benjo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines