【发布时间】:2014-05-24 17:53:07
【问题描述】:
我使用PushbackInputStream 来查看流中的下一个字节(bufferedIn,这是一个BufferedInputStream),因为我想mark() 在某个值之前,然后回退之前使用reset()。
// Wrap input stream into a push back stream
PushbackInputStream pbBufferedIn = new PushbackInputStream(bufferedIn, 20);
boolean markDone = false; // Flag for mark
boolean resetDone = false; // Flag for reset
// Read each byte in the stream (some twice)
for (int i = pbBufferedIn.read(); i != -1; i = pbBufferedIn.read()) {
// Convert to byte
byte b = (byte) i;
// Check for marking before value -1
if (!markDone) {
if (b == -1) {
// Push character back
pbBufferedIn.unread(i);
// Mark for later rewind
pbBufferedIn.mark(20);
markDone = true;
System.out.print("[mark] ");
// Re-read
pbBufferedIn.read();
}
}
// Print the current byte
System.out.print(b + " ");
// Check for rewind after value 1
if (markDone && !resetDone && b == 1) {
pbBufferedIn.reset(); // <------ mark/reset not supported!
resetDone = true;
System.out.print("[reset] ");
}
}
讽刺的是PushbackInputStream 不支持标记/重置...另一方面,支持标记/重置的BufferedInputStream 没有推回机制...我该怎么办?
【问题讨论】:
标签: java stream reset push-back