Título: obtener el espacio libre del disco duro donde se ejecuta la aplicación
Publicado por: kinos 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: 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() { 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: 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: 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() { 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(){ 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 ;-)
Título: Re: obtener el espacio libre del disco duro donde se ejecuta la aplicación
Publicado por: -Ramc- 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: public long getTotalSpace(); public long getFreeSpace(); public long getUsableSpace();
Título: Re: obtener el espacio libre del disco duro donde se ejecuta la aplicación
Publicado por: Debci 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: 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() { 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: 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
Título: Re: obtener el espacio libre del disco duro donde se ejecuta la aplicación
Publicado por: 1mpuls0 en 21 Agosto 2009, 23:16 pm
Cierto -Ramc- y Debci ambos tienen razon ;D Puedes intentar algo asi. import java.io.*; public class discoDuro { public static void main (String[] args ) { new discoDuro(); } public discoDuro() { estadoDiscoDuro(); } public void estadoDiscoDuro() { long espacioTotal = drive.getTotalSpace(); long espacioLibre = drive.getFreeSpace(); System. out. println("Espacio Total: " +espacioTotal +" kB = " +espacioTotal /1073741824 +" GB"); System. out. println("Espacio Libre: " +espacioLibre +" kB = " +espacioLibre /1073741824 +" GB"); } }
para calcular el espacio usado puedes usar el método o calcularlo mediante una resta. Saludos
Título: Re: obtener el espacio libre del disco duro donde se ejecuta la aplicación
Publicado por: Debci en 22 Agosto 2009, 17:13 pm
mm no lo habia pensado... esta bien jeje, lo añadiré a mi paquete de clases.
Saludos
Título: Re: obtener el espacio libre del disco duro donde se ejecuta la aplicación
Publicado por: goldenfalc en 18 Mayo 2010, 12:32 pm
Que bueno el post de verdad me habeis salvado gracias
|