2009-06-26 2 views

ответ

71

Просто взгляните на класс файла documentation. Это одна из новых функций в версии 1.6.

Эти новые методы также включают в себя:

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

Если вы все еще используете 1.5, то вы можете использовать Apache Commons IO библиотеку и ее FileSystem class

+10

Примечание очень важно, что getUsableSpace не равна getFreeSpace. Например, в файловых системах Linux в разделах очень часто имеется несколько зарезервированных блоков. Они включены в значение, возвращаемое getFreeSpace(), но не в значение из getUsableSpace(). Поэтому, если вам интересно, сколько места вам нужно для записи файлов, используйте getUsableSpace - NOT getFreeSpace(). – Mikkel

+0

«Ты используешь», а не «свое использование», ради Бога. Его системный класс. – biggvsdiccvs

6

Link

Если вы программист Java, вы можете уже задавали этот простой, stupide вопрос: «как найти свободного места на диске осталось на моей системе?». Проблема в том, что ответ зависит от системы. На самом деле, это реализация , которая зависит от системы . И до недавнего времени, не было единственным решением, чтобы ответить этот вопрос, хотя потребность была зарегистрирована в базе данных Bug Sun с июня 1997 года Теперь можно получить свободное дисковое пространство в Java 6 с в метод в файле класса, который возвращает количество незанятых байтов в разделе, названном абстрактным именем пути . Но вы можете быть заинтересованным в использовании дискового пространства (тот, который доступен для записи). Даже можно получить общее количество дискового пространства раздела с помощью метода getTotalSpace().

15

Использование CommonsIO и FilesystemUtils:

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

например,

FileSystemUtils.freeSpaceKb("/"); 

или встроенный в JDK:

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

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

Есть ли какая-либо другая встроенная функция, которая служит цели без необходимости создания нового файла? – user892871

+4

Он не создает новый файл на диске, просто объект File, если это вас беспокоит –

+1

'FileSystemUtils' просто запускает команду« df »(или использует DIR на окнах). довольно ужасно. –

45

Java 1.7 имеет немного другой API, свободное пространство может быть запрошены через FileStore класса с помощью методов getTotalSpace(), getUnallocatedSpace() и 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()); 
    } 
} 

Преимущество этого API в том, что вы получаете значимые исключения, когда запрос на дисковое пространство терпит неудачу.

+1

В Linux Debian вызов FileSystems.getDefault(). GetRootDirectories() возвращает только каталог «/». – pako

2

при проверке дискового пространства с использованием java у вас есть следующий метод в java.Ио класс File

  • getTotalSpace()
  • getFreeSpace()

, который, безусловно, поможет вам в получении необходимой информации. Например, вы можете обратиться к http://javatutorialhq.com/java/example-source-code/io/file/check-disk-space-java/, который дает конкретный пример использования этих методов.

+0

Добро пожаловать в переполнение стека! Обратите внимание, что здесь нет ссылок на ваш собственный сайт/продукт по двум причинам; Во-первых, ответ должен быть опубликован как автономный ответ, а не просто ссылка на внешний сайт. Во-вторых, самореклама, как правило, недооценивается здесь и часто помечена как спам (особенно если нет раскрытия того, что вы ссылаетесь на свой собственный сайт/продукт). –

-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());  
} 
} 

Попробуйте этот код, чтобы получить DISKSPACE

+1

Этот код предназначен для памяти, а не для дискового пространства. –