如何将InputStream转换为FileInputStream

弗兰克:

我的程序中有这一行:

InputStream Resource_InputStream=this.getClass().getClassLoader().getResourceAsStream("Resource_Name");

但是,如何从[Resource_InputStream]中获取FileInputStream?

BalusC:

ClassLoader#getResource()如果它的URI表示有效的本地磁盘文件系统路径,改用。

URL resource = classLoader.getResource("resource.ext");
File file = new File(resource.toURI());
FileInputStream input = new FileInputStream(file);
// ...

如果没有(例如JAR),那么最好的选择是将其复制到一个临时文件中。

Path temp = Files.createTempFile("resource-", ".ext");
Files.copy(classLoader.getResourceAsStream("resource.ext"), temp, StandardCopyOption.REPLACE_EXISTING);
FileInputStream input = new FileInputStream(temp.toFile());
// ...

话虽如此,我真的看不到这样做有什么好处,或者它必须由较差的帮助程序类/方法(而FileInputStream不是)所必需InputStream如果可以的话,只需修复API即可InputStream如果是第三方,则一定要报告为错误。在这种特定情况下,我还会在该API的其余部分周围打上问号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章