如果我的空间已满,我有时会出现以下异常
java.io.IOException: No space left on device
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:282)
at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1847)
at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1756)
at java.io.ObjectOutputStream.<init>(ObjectOutputStream.java:230)
Java中有什么方法可以避免这种情况。我的意思是如果没有空格,请不要调用write
Java 7 NIO提供了FileStore
类来检查可用大小
Path p = Paths.get("/your/file"); // where you want to write
FileSystem fileSystem = FileSystems.getDefault();
Iterable<FileStore> iterable = fileSystem.getFileStores();
Iterator<FileStore> it = iterable.iterator(); // iterate the FileStore instances
while(it.hasNext()) {
FileStore fileStore = it.next();
long sizeAvail = fileStore.getUsableSpace(); // or maybe getUnallocatedSpace()
if (Files.getFileStore(p).equals(fileStore) { // your Path belongs to this FileStore
if (sizeAvail > theSizeOfBytesYouWantToWrite) {
// do your thing
}
}
}
显然,您仍然可以获得a,IOException
因为没有什么是原子的,其他进程可能正在使用同一磁盘,因此请记住这一点并相应地处理异常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句