如何在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.tx
t,如下所示,
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
时使用的参数值。
话虽如此,要获取文件名,您需要使用File
或Path
来提取它;例如
String justTheFileName = new File(fileName).getName();
或
String justTheFileName = Paths.get(fileName).getFileName();
【讨论】:
以上是关于如何在Java中使用InputStream从目录中获取文件名[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Java如何从InputStream中读取收入大小? [复制]
如何从 java.lang.String 获取 java.io.InputStream?