如何在Java中使用InputStream从目录中获取文件名

时间:2018-11-01 14:04:18

标签: java inputstream

我只需要使用InputStream从目录中获取文件名。
我通过使用abc.tx如下获得文件名File

File file = new File("F:\\source\\abc.txt");
file.getAbsoluteFile().getName()  // getting - abc.txt

以同样的方式,我想使用abc.txt来获得与上述完全相同的文件名InputStream

InputStream inputfile= new FileInputStream("F:\\source\\abc.txt");

Field field = inputfile.getClass().getDeclaredField("path");
field.setAccessible(true);
String filePath  = (String)field.get(inputfile);
File fileName = new File(filePath);

请帮助我,如何仅获取文件名?

1 个答案:

答案 0 :(得分:1)

首先,您正在做的事情很脆弱:

  • 如果InputStream不是FileInputStream,它将失败。
  • 如果将来的Java版本更改FileInputStream的内部结构,则可能会失败。
  • 如果您的代码被沙箱化,则可能会失败。

保留/传递实例化FileInputStream时使用的参数值会更好。

已经说过,仅获取文件名,您需要使用FilePath来提取文件名;例如

  String justTheFileName = new File(fileName).getName(); 

  String justTheFileName = Paths.get(fileName).getFileName();