我已阅读此文章How to convert InputStream to FileInputStream将InputStream转换为FileInputStream。但是,如果您使用的是jar文件中的资源,则答案不起作用。有没有另一种方式来做到这一点。将InputStream转换为FileInputStream
我需要这样做,以获得来自呼叫FileChannel
到 Object.class.getResourceAsStream(resourceName);
我已阅读此文章How to convert InputStream to FileInputStream将InputStream转换为FileInputStream。但是,如果您使用的是jar文件中的资源,则答案不起作用。有没有另一种方式来做到这一点。将InputStream转换为FileInputStream
我需要这样做,以获得来自呼叫FileChannel
到 Object.class.getResourceAsStream(resourceName);
你不能,基本上没有写入文件。除非有文件,否则不能有FileInputStream
或FileChannel
。如果可能,请确保您的代码与输入源无关 - 根据InputStream
和ByteChannel
(或任何类型的通道最合适)进行设计。
从Class.getResourceAsStream()返回的InputStream中,你可以做一个通道与Channels.newChannel(InputStream).
这是不是你所要求的FileChannel,但它仍然是一个通道。满足您的需求是否足够?
有趣的,让我试试这个 – user489041 2011-03-18 17:01:17
如果您确实需要一个文件,并且您知道资源不在jar内或远程加载,那么您可以使用getResource
代替。
URL resourceLocation = Object.class.getResource(resourcePath);
if (resourceLocation == null) { throw new FileNotFoundException(resourcePath); }
File myFile = new File(resourceLocation.toURI());
如果没有绝对需要一个FileChannel
或不能使你的类路径是如何布局的假设,然后安迪·托马斯 - 克拉默的解决方案可能是最好的。
感谢迈克,但我需要的资源将在JAR文件中。 – user489041 2011-03-18 17:11:28
在这种情况下,如果不以某种方式将jar作为文件系统安装,就无法做到这一点。文件通道预设了一个文件。干杯 – 2011-03-18 18:59:28
你为什么需要它?一般来说,可能没有这样的对象。 – 2011-03-18 16:36:44
好吧,我会咬:为什么你需要FileChannel? – Pointy 2011-03-18 16:39:02
有一个我正在尝试使用的复制功能。 – user489041 2011-03-18 17:00:10