获取 FileInputStream 使用的文件
Getting the file used by a FileInputStream
是否可以获得FileInputStream
正在使用的File
? FileInputStream
似乎没有任何检索方法。
FileInputStream
API中没有直接的方法,但是如果你真的想要,你可以使用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 实现中都能实现结果因为它没有在规范中定义。
是否可以获得FileInputStream
正在使用的File
? FileInputStream
似乎没有任何检索方法。
FileInputStream
API中没有直接的方法,但是如果你真的想要,你可以使用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 实现中都能实现结果因为它没有在规范中定义。