如何去除 java 中输入流的前几个字符?
How to strip the first few characters of an input stream in java?
我有一个 fileInputStream 对象,它可能包含也可能不包含 xml 声明 <?xml version='1.0'?>
。我需要删除 xml 声明(如果存在)。如何在不将 inputStream 对象转换为字符串、剥离 XML PI 然后将其转换回输入流的情况下执行此操作?
InputStream inputStream = new FileInputStream(importFilePath);
我能想到两个方案:
使用FileInputStream.getChannel()。从频道读取后,如果需要,您可以调用 position(0)
将其重置为开头。
使用自定义 FilteredInputStream 包装 InputStream。可以这样写,第一行提前缓冲,判断是使用还是丢弃。
将 FileInputStream
包裹在 PushbackInputStream 中,并检查它是否以 PI 开头。如果是这样,请读出来。不然把读到的字符推回去测试一下。
我有一个 fileInputStream 对象,它可能包含也可能不包含 xml 声明 <?xml version='1.0'?>
。我需要删除 xml 声明(如果存在)。如何在不将 inputStream 对象转换为字符串、剥离 XML PI 然后将其转换回输入流的情况下执行此操作?
InputStream inputStream = new FileInputStream(importFilePath);
我能想到两个方案:
使用FileInputStream.getChannel()。从频道读取后,如果需要,您可以调用
position(0)
将其重置为开头。使用自定义 FilteredInputStream 包装 InputStream。可以这样写,第一行提前缓冲,判断是使用还是丢弃。
将 FileInputStream
包裹在 PushbackInputStream 中,并检查它是否以 PI 开头。如果是这样,请读出来。不然把读到的字符推回去测试一下。