我想在文本文件中搜索特定的文本行。如果我要查找的文本位于特定行,我想进一步阅读该行以获取更多输入。
到目前为止,我正在寻找 3 个标签。
@public
@private
@virtual
如果我在一行上找到其中任何一个,我想阅读接下来会发生什么,例如,我可以有这样的一行:
@public double getHeight();
如果我确定我找到的标签是,@public
那么我必须在空格之后执行以下部分,直到我到达分号。问题是,我真的想不出一种有效的方法来做到这一点而不会过度使用charAt(..)
它看起来既不漂亮,但从长远来看对于大文件或连续多个文件来说可能都不好。
我想帮助有效地解决这个问题,因为我目前无法理解我将如何做到这一点。代码本身用于解析 C++ 文件中的注释,然后生成 Header 文件。伪代码部分是我卡住的地方。有人建议使用 BufferedReader,也有人建议使用 Scanner。我选择了 Scanner,因为它似乎是 BufferedReader 的替代品。
public void run() {
Scanner scanner = null;
String filename, path;
StringBuilder puBuilder, prBuilder, viBuilder;
puBuilder = new StringBuilder();
prBuilder = new StringBuilder();
viBuilder = new StringBuilder();
for(File f : files) {
try {
filename = f.getName();
path = f.getCanonicalPath();
scanner = new Scanner(new FileReader(f));
} catch (FileNotFoundException ex) {
System.out.println("FileNotFoundException: " + ex.getMessage());
} catch (IOException ex) {
System.out.println("IOException: " + ex.getMessage());
}
String line;
while((line = scanner.nextLine()) != null) {
/**
* Pseudo Code
* if @public then
* puBuilder.append(line.substring(after white space)
* + line.substring(until and including the semicolon);
*/
}
}
}