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