将文件的一部分用于文件[输入/输出]流

时间:2015-03-01 11:49:08

标签: java io

我想为一些二进制文件添加标题。我的问题是我想要使用第三方库来解码文件的其余部分,该第三方库需要FileInputStream(或Output ofc),而不需要头文件。所以我打算做的是从文件中读取固定数量的X字节(平凡)​​,然后将其余部分透明地显示为新的Stream - 没有标题 - 以便第三方lib可以在其上执行其操作而无需在标题上窒息。

怎么可以这样做?

我想可以将文件的其余部分读入内存中的新文件流,但这看起来非常低效。有更好的解决方案吗?

感谢。

1 个答案:

答案 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 +。