如何在java中删除输入流的前几个字符?

时间:2016-11-15 19:10:28

标签: java xml inputstream java-io

我有一个fileInputStream对象,可能包含也可能不包含xml声明<?xml version='1.0'?>。我需要剥离xml声明(如果存在)。如果不将inputStream对象转换为字符串,剥离XML PI然后将其转换回输入流,我该怎么做?

InputStream inputStream = new FileInputStream(importFilePath);

2 个答案:

答案 0 :(得分:4)

FileInputStream包裹在PushbackInputStream中,然后检查它是否以PI开头。如果是这样,那就读出去吧。否则,请按下您读取的字符进行测试。

答案 1 :(得分:1)

我可以想到两个选择:

  1. 使用FileInputStream.getChannel()。从频道阅读后,如果需要,可以调用position(0)将其重置为开头。

  2. 使用自定义FilteredInputStream来包装InputStream。这可以通过预先缓冲第一行的方式编写,以确定它是否将被使用或丢弃。