我的程序中有这一行:
InputStream Resource_InputStream=this.getClass().getClassLoader().getResourceAsStream("Resource_Name");
Run Code Online (Sandbox Code Playgroud)
但是如何从它获取FileInputStream [Resource_InputStream]?
Bal*_*usC 63
使用ClassLoader#getResource()而不是如果URI表示一个有效的本地磁盘文件系统路径.
URL resource = classLoader.getResource("resource.ext");
File file = new File(resource.toURI());
FileInputStream input = new FileInputStream(file);
// ...
Run Code Online (Sandbox Code Playgroud)
如果没有(例如JAR),那么最好的办法是将其复制到临时文件中.
Path temp = Files.createTempFile("resource-", ".ext");
Files.copy(classLoader.getResourceAsStream("resource.ext"), temp, StandardCopyOption.REPLACE_EXISTING);
FileInputStream input = new FileInputStream(temp.toFile());
// ...
Run Code Online (Sandbox Code Playgroud)
也就是说,我真的没有看到这样做有什么好处,或者必须要求一个糟糕的帮助者类/方法来FileInputStream代替InputStream.如果可以的话,只需修改API即可InputStream.如果它是第三方,请务必将其报告为错误.我在这个特定的案例中也在该API的其余部分放置了问号.
whi*_*rra 12
简而言之: 不要将FileInputStream用作参数或变量类型.使用抽象基类,在本例中使用InputStream.
| 归档时间: |
|
| 查看次数: |
117854 次 |
| 最近记录: |