将InputStream转换为SeekableByteChannel

4

我正在尝试将一个InputStream转换为SeekableByteChannel,以便使用LWJGL在Open AL中进行流式传输。

感谢在线演示的帮助,当前代码如下:

InputStream source = Thread.currentThread().
                         getContextClassLoader().
                         getResourceAsStream(resource);
ReadableByteChannel rbc = Channels.newChannel(source);

但是我不确定,在不将其转换为SeekableByteChannel的情况下,如何搜索OGG文件以进行流式传输。

如果需要,我很乐意提供更多的代码,并提前感谢任何帮助。


我不认为这是可能的。 - Louis Wasserman
你会不会知道Java内寻找OGG文件的其他方法?目前我的做法是读取整个文件,但对于这么大的文件来说并不好。 - Alec French
你可能需要将其作为 FileChannel 打开,这意味着将其作为文件而不是资源打开,或者将资源转换为路径。 - Louis Wasserman
1
一般来说,它不起作用。如果您提供具体案例,可能会有解决方案。 - Jimmy T.
Apache Seven Zip支持压缩吗? - Astha Garg
1个回答

3

请查看Apache Commons Compress库,你可以使用字节数组构建一个SeekableInMemoryByteChannel对象。同时将InputStream转换为字节数组也非常容易。

InputStream inputStream; // input stream
SeekableInMemoryByteChannel channel = new SeekableInMemoryByteChannel
       (IOUtils.toByteArray(inputStream));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接