我正在编写一个编译程序来读取文本文件。文本文件中的一些命令将告诉我跳回文本文件中的某一行并从那里读取。事实上,这段代码我一次读取一行,直到文档结束。反正有没有解析器跳回或转发到文本文件中的某一行?让我们举个例子,我目前在第8行,说明是回去读第4行?
这是我解析文件的代码。
try {
FileInputStream fstream = new FileInputStream("compilers.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
while ((strLine = br.readLine()) != null && checker == false) {
// rest of code in here
}
in.close();
}
答案 0 :(得分:2)
有流mark()
和reset()
功能,
但是使用BufferedStream
时这些可能会失败。更好的你
将整个文件读入ArrayList
,每行一个条目。
ArrayList的示例:
List<String> lines = new ArrayList<String>();
while ((strLine = br.readLine()) != null) {
lines.add(strLine);
}
// later get line by:
// first line has index 0
String line = lines.get(8);
答案 1 :(得分:1)
您可以使用Map
HashMap<Integer, String>
Key是您的行号,值是您的行。因此,您可以在需要时逐行获取。
Map<Integer, String> lineMap = new HashMap<Integer, String>();
int i = 1;
while ((strLine = br.readLine()) != null && !checker) {
lineMap.put(i, strLine);
// do what you want
// if you are in line 8 (i=8)
// get my line 4 (lineMap.get(4))
i++;
}