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

Posted

技术标签:

【中文标题】如何在Java中使用InputStream从目录中获取文件名[关闭]【英文标题】:How to get the file name from the directory using InputStream in Java [closed] 【发布时间】:2019-04-05 18:34:14 【问题描述】:

我只需要使用InputStream从目录中获取文件名。 我通过使用File 得到的文件名为abc.txt,如下所示,

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);

你能帮我吗,如何只获取文件名?

【问题讨论】:

非常混乱的问题。 inputfile 是什么?是InputStream吗? 是的,它是一个 InputStream 【参考方案1】:

首先,你所做的是脆弱的:

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

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

话虽如此,要获取文件名,您需要使用FilePath 来提取它;例如

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

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

【讨论】:

以上是关于如何在Java中使用InputStream从目录中获取文件名[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Java如何从InputStream中读取收入大小? [复制]

如何从 java.lang.String 获取 java.io.InputStream?

如何在java中识别InputStream的结束

如何从 Java 8 Streams 中获取 Inputstream?

如何从字符串创建 InputStream? [复制]

如何从 Java 中的 InputStream 打开 MS Access 文件?