我的程序中有这一行:
InputStream Resource_InputStream=this.getClass().getClassLoader().getResourceAsStream("Resource_Name");
但是,如何从[Resource_InputStream]中获取FileInputStream?
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] 删除。
我来说两句