2009-06-26 59 views

Respuesta

71

Basta con mirar la clase de archivo documentation. Esta es una de las nuevas funciones en 1.6.

Estos nuevos métodos también incluyen:

  • public long getTotalSpace()
  • public long getFreeSpace()
  • public long getUsableSpace()

Si usted todavía está utilizando 1.5, puede utilizar la biblioteca y su Apache Commons IOFileSystem class

+10

Nota muy importante que getUsableSpace no es igual a GetFreeSpace. En los sistemas de archivos Linux, por ejemplo, las particiones suelen tener una cantidad de bloques reservados. Estos se incluyen en el valor devuelto por getFreeSpace() pero no en el valor de getUsableSpace(). Entonces, si está interesado en cuánto espacio tiene para escribir archivos, use getUsableSpace - NOT getFreeSpace(). – Mikkel

+0

"Estás usando", no "tu uso", por el amor de Dios. Su clase de sistema. – biggvsdiccvs

6

Link

Si usted es un programador de Java, es posible que ya se han hecho esta sencilla pregunta stupide: “cómo encontrar el espacio de disco libre permanecen en el sistema?”. El problema es que la respuesta es depende del sistema. En realidad, es la implementación que depende del sistema . Y hasta hace muy poco, no existe una solución única para responder esta pregunta, aunque la necesidad ha ha registrado en la base de datos de errores de Sun desde junio de 1997. Ahora es posible obtener el espacio libre en disco en Java 6 con una método en el archivo de clase, que devuelve el número de bytes sin asignar en la partición nombrada por el nombre de ruta de acceso abstracto . Pero puede ser interesado en el espacio en disco utilizable (el que se puede escribir). Es incluso posible obtener el espacio total en el disco de una partición con el método getTotalSpace().

15

Uso CommonsIO y FilesystemUtils:

http://commons.apache.org/io/api-release/org/apache/commons/io/FileSystemUtils.html#freeSpaceKb(java.lang.String)

por ejemplo

FileSystemUtils.freeSpaceKb("/"); 

o integrado en el JDK:

http://java.sun.com/javase/6/docs/api/java/io/File.html#getFreeSpace()

new File("/").getFreeSpace(); 
+0

¿Hay alguna otra función incorporada que sirva para el propósito sin la necesidad de crear un nuevo archivo? – user892871

+4

No crea un nuevo archivo en el disco, solo un objeto File, si eso es lo que le preocupa –

+1

'FileSystemUtils' solo ejecuta el comando" df "(o usa DIR en Windows). bastante terrible. –

45

Java 1.7 tiene una API ligeramente diferente, el espacio libre se puede consultar a través de la clase FileStore a través de los métodos getTotalSpace(), getUnallocatedSpace() y getUsableSpace() .

NumberFormat nf = NumberFormat.getNumberInstance(); 
for (Path root : FileSystems.getDefault().getRootDirectories()) { 

    System.out.print(root + ": "); 
    try { 
     FileStore store = Files.getFileStore(root); 
     System.out.println("available=" + nf.format(store.getUsableSpace()) 
          + ", total=" + nf.format(store.getTotalSpace())); 
    } catch (IOException e) { 
     System.out.println("error querying space: " + e.toString()); 
    } 
} 

La ventaja de esta API es que se obtienen excepciones significativas cuando se produce un error al consultar el espacio en disco.

+1

En Linux Debian, la llamada FileSystems.getDefault(). GetRootDirectories() solo devuelve el directorio "/". – pako

2

al verificar el espacio de disco con java tiene el siguiente método en java.io clase File

  • getTotalSpace()
  • GetFreeSpace()

que sin duda le ayudará a obtener la información requerida. Por ejemplo, puede consultar http://javatutorialhq.com/java/example-source-code/io/file/check-disk-space-java/ que proporciona un ejemplo concreto al usar estos métodos.

+0

¡Bienvenido a Stack Overflow! Tenga en cuenta que los enlaces desnudos a su propio sitio web/producto no son alentados aquí por dos razones; En primer lugar, una respuesta debe publicarse como una respuesta independiente, no como un simple enlace a un sitio externo. En segundo lugar, la autopromoción tiende a ser mal vista aquí, y a menudo se señala como correo no deseado (especialmente si no hay información que indique que está enlazando a su propio sitio/producto). –

-1
public class MemoryStatus{ 
public static void main(String args[])throws Exception{ 
    Runtime r=Runtime.getRuntime(); 
    System.out.println("Total Memory: "+r.totalMemory()); 
    System.out.println("Free Memory: "+r.freeMemory());  
} 
} 

Prueba este código para obtener el espacio de disco

+1

Este código es para memoria, no espacio en disco. –

Cuestiones relacionadas