IOException для накопителя, заполненного или свободного места - PullRequest
10 голосов
/ 08 июня 2009

Я ищу список сообщений IOException для конкретной платформы (для JRE), указывающих, что диск заполнен или недостаточно места.

Пока у меня есть:

  • Windows: There is not enough space on the disk
  • Solaris / Linux ?: Not enough space
  • GCJ: No space left on device

Хотелось бы, чтобы Java создала для этого подкласс IOException ...

Ответы [ 2 ]

9 голосов
/ 08 июня 2009

Эта формулировка фактически является системным сообщением, а не сообщением JRE. (POSIX-совместимый вернет «Недостаточно места»)

Поэтому лучше всего получить список системных сообщений об ошибках для целевой ОС.

В качестве альтернативы, когда выдается исключение, вы можете проверить, осталось ли на диске свободное место.

Из общего доступа Apache:

FileSystemUtils.freeSpaceKb(String path);

вернет свободное место на диске / томе (или может даже выдать IOException!)

2 голосов
/ 09 июня 2009

Относительно того, почему нет подкласса IOException, я подозреваю, что вызов файла операционной системы не дает достаточно информации в достаточном количестве случаев, чтобы Java могла понять, что это за ошибка, без разбора сообщения об ошибке (очень хрупкая операция при Лучший). Это, вероятно, верно для ряда вызовов io.

...