我有一个fileInputStream对象,可能包含也可能不包含xml声明<?xml version='1.0'?>
。我需要剥离xml声明(如果存在)。如果不将inputStream对象转换为字符串,剥离XML PI然后将其转换回输入流,我该怎么做?
InputStream inputStream = new FileInputStream(importFilePath);
答案 0 :(得分:4)
将FileInputStream
包裹在PushbackInputStream中,然后检查它是否以PI开头。如果是这样,那就读出去吧。否则,请按下您读取的字符进行测试。
答案 1 :(得分:1)
我可以想到两个选择:
使用FileInputStream.getChannel()。从频道阅读后,如果需要,可以调用position(0)
将其重置为开头。
使用自定义FilteredInputStream来包装InputStream。这可以通过预先缓冲第一行的方式编写,以确定它是否将被使用或丢弃。