Мне нужно получить свободное место на диске для всех дисков в системе или во всех разделах, я не против. (Я не должен использовать SIGAR, но я использую его уже на проекте для некоторых других процессов, так что я могу использовать его для этого, как хорошо) Я использую SIGAR API и получил этотПолучить список дисков для чтения свободного пространства на Java, используя Sigar
public double getFreeHdd() throws SigarException{
FileSystemUsage f= sigar.getFileSystemUsage("/");
return (f.getAvail());
}
Но это только дает мне системный раздел (root), как я могу получить список всех разделов и зацикливать их, чтобы получить их свободное пространство? Я попробовал этот
FileSystemView fsv = FileSystemView.getFileSystemView();
File[] roots = fsv.getRoots();
for (int i = 0; i < roots.length; i++) {
System.out.println("Root: " + roots[i]);
}
Но это только возвращает корневого каталога
Корень:/
Благодарности
Редактировать , кажется, что я мог бы использовать FileSystem[] fslist = sigar.getFileSystemList();
Но результаты, которые я получаю, не соответствуют тем, которые я получаю от терминала. С другой стороны, в этой системе я работаю, у меня есть 3 диска с 12 разделами, поэтому я могу что-то потерять. Попробуй его в другой системе, если я смогу сделать что-то полезное из результатов.
Windows, имеет 'Fsutil FSINFO drives', что дает' диски: C: \ E: \ F: \ G: \ и 'Fsutil FSINFO DriveType G:' ', что дает G: - CD-ROM Drive' – Marichyasana
@Marichyasana Я бы предпочел использовать что-то sys независимы. пока это будет выполнено в Linux, но все равно не знает, может ли в будущем использовать Win-box. То почему я пошел для Sigar в первую очередь –