我相信你是对的。小型测试表明,在关闭
FileDescriptor后,该变得无效
FileInputStream。请注意,如果有多个
FileInputStream相同的
FileDescriptor,则
FileDescriptor第一个
FileInputStream关闭时,该会立即变为无效,即,先关闭
fis1然后再
fis2以其他方式关闭都没有关系:
FileInputStream fis1 = new FileInputStream("/tmp/adb.log");FileDescriptor fd = fis1.getFD();FileInputStream fis2 = new FileInputStream(fd);System.out.println(fd.valid());fis1.close();System.out.println(fd.valid());fis2.close();System.out.println(fd.valid());输出为:
truefalsefalse
不要忘记在一个
finally块中关闭流,以确保在发生I / O(读/写)错误时也将其关闭。



