Difference between getFreespace() and getUsableSpace of File

后端 未结 3 897
慢半拍i
慢半拍i 2021-01-03 23:53

I could not point out exact difference between getFreeSpace() and getUsableSpace() method of File class. When i run following code

相关标签:
3条回答
  • 2021-01-04 00:43

    The difference is quite clearly stated in the Javadoc of the two methods:

    getFreeSpace():

    Returns the number of unallocated bytes in the partition named by this abstract path name. [...]

    getUsableSpace():

    Returns the number of bytes available to this virtual machine on the partition named by this abstract pathname. When possible, this method checks for write permissions and other operating system restrictions and will therefore usually provide a more accurate estimate of how much new data can actually be written than getFreeSpace(). [...]

    However, on most systems the two methods return the exact same number.

    0 讨论(0)
  • 2021-01-04 00:47

    The java.io.File.getFreeSpace() method returns the number of unallocated bytes in the partition named by this abstract path name. The returned number of unallocated bytes are not a gurantee. The count of unallocated bytes is likely to be accurate immediately after this call and inaccurate by any external I/O operations.

    The java.io.File.getUsableSpace() method returns the number of bytes available to this virtual machine on the partitioned named by this abstract name. This method usually provide a more accurate estimate of how much new data can actually be written as this method checks for write permissions and other operating system restrictions.

    0 讨论(0)
  • 2021-01-04 00:53

    The javadoc of getUsableSpace() says:

    When possible, this method checks for write permissions and other operating system restrictions and will therefore usually provide a more accurate estimate of how much new data can actually be written than getFreeSpace().


    So we should choose getUsableSpace in most cases.


    update:

    notice below reported bug, in a very large disk the size of the space may exceed the limits of long type and return a negative value:

    JDK-8179320 : File getUsableSpace() returns a negative number on very large file system

    0 讨论(0)
提交回复
热议问题