如何查看输入流中的前两个字节?
2022-09-01 08:09:24
应该很简单:我有一个输入流,我想偷看(而不是读取)前两个字节,即我希望输入流的“当前位置”在我偷看后为0。什么是最好和最安全的方法?
答 - 正如我所怀疑的那样,解决方案是将其包装在提供可标记性的BufferedInputStream中。谢谢拉斯穆斯
应该很简单:我有一个输入流,我想偷看(而不是读取)前两个字节,即我希望输入流的“当前位置”在我偷看后为0。什么是最好和最安全的方法?
答 - 正如我所怀疑的那样,解决方案是将其包装在提供可标记性的BufferedInputStream中。谢谢拉斯穆斯
对于一般的输入流,我会将其包装在缓冲的输入流中,并执行如下操作:
BufferedInputStream bis = new BufferedInputStream(inputStream);
bis.mark(2);
int byte1 = bis.read();
int byte2 = bis.read();
bis.reset();
// note: you must continue using the BufferedInputStream instead of the inputStream
您可能会发现 PushbackInputStream 很有用:
http://docs.oracle.com/javase/6/docs/api/java/io/PushbackInputStream.html