Java:读取包含文本和二进制数据的文件

时间:2013-03-20 18:18:45

标签: java file-io binary-data

我遇到了新文件格式的问题我被要求在工作中实施。

基本上,该文件是一个文本文件,其中包含一堆包含有关UTC-8中数据的信息的标题,然后文件的其余部分是二进制数字数据。我可以编写数据并将其读回来,我最近添加了代码来编写标题。 问题是我不知道如何读取包含文本和二进制数据的文件。我希望能够读入并处理标头信息(这是相当广泛的),然后能够继续读取二进制数据,而无需重新遍历标头。这可能吗?

我目前正在使用FileInputStream来读取二进制数据,但我不知道如何在数据的开头启动它,而不是整个文件的开头。其中一个FileInputStream的构造函数使用FileDescriptor作为参数,我认为这是我的答案,但我不知道如何从另一个文件读取类中获取一个。我正确接近这个吗?

1 个答案:

答案 0 :(得分:0)

您可以FileInputStream通过getChannel()通过position()并在该频道上调用FileInputStream,将{{1}}重新定位到任意点。

需要注意的是,此位置会影响流的所有消费者。如果您从同一文件的不同部分读取不同的线程(例如),则不适用。在这种情况下,为每个消费者创建一个单独的{{1}}。

此外,此技术仅适用于文件流,因为可以随机访问基础文件。套接字,命名管道或其他任何实际上是的等效项都没有。