b.r*_*oth 10
这是不可能的.(不是来自Java API中的FileInputStream).该FileInputStream构造函数不存储在任何领域这样的信息:
public FileInputStream(File file) throws FileNotFoundException {
String name = (file != null ? file.getPath() : null);
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkRead(name);
}
if (name == null) {
throw new NullPointerException();
}
fd = new FileDescriptor();
open(name);
}
Run Code Online (Sandbox Code Playgroud)
两个重要的面向对象设计原则阻止您完成您所要求的事情:抽象和封装。
InputStream,它是一个可以提供字节的通用接口,无论这些字节的来源如何。an 的抽象InputStream没有文件路径的概念;这仅与 的特定实现相关InputStream。FileInputStream封装它正在读取的文件的详细信息,因为该InputStream信息与用法无关。实例path字段是封装的,因此该类的用户无法使用。话虽如此,如果您愿意接受一些重要的限制,则可以访问该变量。path基本上,要点是您可以检查是否InputStream实际上是 的实例FileInputStream,如果是,则使用反射来读取path实例字段。我将省略进行该访问的详细信息,因为它很容易在java.lang.ClassJava 文档和在线中找到,并且在大多数情况下通常并不是一件好事。由于该问题没有提供有关原因的背景,因此很难提供任何更合理的方法。