获取 FileInputStream 使用的文件

Getting the file used by a FileInputStream

是否可以获得FileInputStream正在使用的FileFileInputStream 似乎没有任何检索方法。

FileInputStreamAPI中没有直接的方法,但是如果你真的想要,你可以使用java反射API来获取path (带完整路径的实际文件名)如下图:

FileInputStream fis = new FileInputStream(inputFile);
Field field = fis.getClass().getDeclaredField("path");
field.setAccessible(true);
String path  = (String)field.get(fis);
System.out.println(path);

path 变量(保存文件名和路径)在 FileInputStream class 中声明为私有最终字段,我们使用反射代码获取它,如图所示以上。

P.S.: 您需要注意,上述方法不能保证在所有 JVM 实现中都能实现结果因为它没有在规范中定义。