gpt4 book ai didi

java - 阅读器中的多个标记

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:06:37 24 4
gpt4 key购买 nike

我找不到用 Java(或 Groovy)编写以下代码的功能

reader.mark();   //(1)
reader.read(); //reads 'a'
reader.mark(); //(2)
reader.read(); //reads 'b'
reader.reset(); //back to (2)
reader.read(); //reads 'b'
reader.reset(); //back to (1)
reader.read(); //reads 'a'
reader.read(); //reads 'b'

Reader.mark(int) 是一个不错的方法,但它不会堆叠标记,它只包含最近的一个..

Java 库的任何支持还是我自己?

最佳答案

所以我自己写的-.-

class CharReader {
private Stack marks;
private RandomAccessFile reader;

CharReader(File file) {
this.marks = new Stack();
this.reader = new RandomAccessFile(file, 'r');
}

void mark() {
long mark = reader.getFilePointer();
marks.push(mark);
}

void reset() {
if (marks.size() <= 0)
return

long mark = marks.pop();
reader.seek(mark);
}

char peek() {
mark();
char nextChar = next();
reset();
return nextChar;
}


char next() {
int nextChar;
if ((nextChar = nextInt()) >= 0) {
return (char) nextChar;
}
throw new IllegalStateException("Reader empty");
}

private int nextInt() {
return reader.read();
}
}

足以满足我的需求。仅支持单字节 char ;-)

关于java - 阅读器中的多个标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13940581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com