2013-07-01 3 views
0

Есть ли способ узнать, сколько всего пространства на жестком диске используется JDK 1.4? В Apache нет такой же функциональности. Помните, мне нужно использовать его с приложением JDK 1.4.Общее дисковое пространство JDK 1.4

Большое спасибо.

Обновление: Я попытался использовать Sigar, но он несовместим с JDK 1.4.2_08. Я загрузил исходный код Sigar, чтобы построить его с моей версией Java, но я не смог разрешить зависимости, указанные в файле build.xml.

+0

правой кнопкой мыши на папку и проверить размер, является то, что вы просите? – kosa

+0

Нет. Это не то, о чем он просит –

+1

Java 1.4 является ** древним **. Все еще используется * * * * * * * * * * * * * * * * * * * * * * * * * * *. Это по крайней мере 3 * основные причины для обновления. Расскажите об этом своему боссу * каждый раз * вы вынуждены делать некоторые уродливые хаки, потому что вы все еще используете версию Java, выпущенную * 11 лет назад * (даже Java 5 уже 9 лет!) –

ответ

0

Учитывая, что методы дискового пространства File были добавлены только в Java 6, я подозреваю, что ваш единственный вариант - вызывать двоичный код, специфичный для ОС, например.

df -k/

(для Linux)

количества усилий нужно затратить на реализацию такого решения может лучше потратить перемещение приложения к недавнему JDK/JRE (вы можете иметь ограничение я m не знаю, однако, поэтому, пожалуйста, проигнорируйте, если это так!)

+0

Я уже подготовил сценарий оболочки для этого: df -H -P/root | grep -vE '^ Файловая система | tmpfs | cdrom' | awk '{print $ 5 "" $ 1}' Проблема в том, что результат вышеизложенного противоречив между различными аппаратными средствами/дистрибутивами ... –

+0

@MouhammedSoueidane - либо обновление до Java 6/7 ... или ношение стоимости/боль от решения противоречивых результатов от внешних команд. –

0

Я не совсем знаком с системами Windows, но для Linux вы можете получить текущий Runtime и создать новый процесс, который будет выполнять системную команду.

Runtime rt = Runtime.getRuntime(); 
Process proc = rt.exec("df -h"); 

Вы можете получить вывод команды из входного потока, а затем анализировать вывод для определения дискового пространства

BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream())); 

Убедитесь, что вы ждете процесса выхода и значение выхода процесса управления. Команды Linux возвращают 0, когда выполнение команды является успешным.

int procReturn = proc.waitFor(); 
+0

Я уже подготовил сценарий оболочки для этого: df -H -P/root | grep -vE '^ Файловая система | tmpfs | cdrom' | awk '{print $ 5 "" $ 1}' Проблема заключается в том, что результат вышеперечисленного несовместим между различными аппаратными средствами/дистрибутивами ... –

+0

Не используйте скрипт для захвата определенной части вывода. Получите все выходные данные «df -h» в объекте считывателя. Затем проанализируйте его в java. В Java больше вариантов обработки текста. – WhiteScars

0

Наконец, я получил то, что мне нужно, используя Sigar 1.6.2, который работает с моей версией Java. Я получил то, что мне было нужно, используя следующую строку кода:

System.out.println("Disk usage on moint point drive/is "+sigar.getFileSystemUsage("/root")); 

Выход:

Disk usage on moint point drive/is {DiskQueue=-1.0, DiskReadBytes=0, DiskWriteBytes=0, Free=2198724, DiskWrites=0, UsePercent=0.71, DiskReads=0, Files=425152, Used=4489992, Avail=1858952, FreeFiles=251740, DiskServiceTime=-1.0, Total=6688716} 
Finished 
Смежные вопросы