我想为一些二进制文件添加标题。我的问题是我想要使用第三方库来解码文件的其余部分,该第三方库需要FileInputStream(或Output ofc),而不需要头文件。所以我打算做的是从文件中读取固定数量的X字节(平凡),然后将其余部分透明地显示为新的Stream - 没有标题 - 以便第三方lib可以在其上执行其操作而无需在标题上窒息。
怎么可以这样做?
我想可以将文件的其余部分读入内存中的新文件流,但这看起来非常低效。有更好的解决方案吗?
感谢。
答案 0 :(得分:2)
有几种方法可以做到这一点。这是一个使用FileChannel
:
public InputStream getInputStream(final Path path)
throws IOException
{
final ByteBuffer buf = ByteBuffer.allocate(HEADER_SIZE);
final FileChannel channel = FileChannel.open(path, StandardOpenOption.READ);
channel.read(buf);
return Channels.newInputStream(channel);
}
您可以从FileInputStream
。
注意:上面的代码需要Java 7 +。