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