驱动器已满或空间不足的IOException
我正在寻找一个特定于平台(特定于JRE)的IOException消息列表,指示磁盘已满或空间不足。
到目前为止我有:
- Windows:
There is not enough space on the disk
- Solaris / Linux?:
Not enough space
- GCJ:
No space left on device
我希望Java为此创建一个IOException子类…
措辞实际上是一个系统消息,而不是来自JRE的消息。 (POSIX兼容将返回“没有足够的空间”)
因此,最好的办法是获取您要定位的操作系统的系统错误消息列表。
或者,当抛出exception时,您可以检查磁盘上是否还有剩余空间。
来自apache commons IO:
FileSystemUtils.freeSpaceKb(String path);
将返回驱动器/卷上的可用空间(或者甚至可能抛出IOException!)
至于为什么没有IOException
子类,我怀疑操作系统文件调用在足够的情况下没有提供足够的信息,以便Java在不解析错误消息的情况下知道错误是什么(最好是非常脆弱的操作)。 这可能适用于许多io调用。