获取 FileInputStream 使用的文件

Jen*_*oan 3 java file-io file fileinputstream

是否可以获得Filea 正在使用的信息FileInputStreamFileInputStream似乎没有任何方法可以检索它。

dev*_*per 5

API中没有直接的方法FileInputStream,但如果您确实需要,可以使用 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);
Run Code Online (Sandbox Code Playgroud)

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

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