Java StringTokenizer 类本身并不支持处理注释。但是,您可以通过编写自定义代码来实现这一功能。以下是一个简单的示例,展示了如何使用 StringTokenizer 处理 Java 源代码文件中的注释:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class CommentProcessor {
public static void main(String[] args) {
String inputFile = "path/to/your/java/source/file.java";
try {
processComments(inputFile);
} catch (IOException e) {
System.err.println("Error reading file: " + e.getMessage());
}
}
public static void processComments(String inputFile) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
String line;
StringTokenizer tokenizer;
StringBuilder comment = new StringBuilder();
while ((line = reader.readLine()) != null) {
tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
if (tokenizer.nextToken().equals("//")) {
// Found a single-line comment, add it to the comment buffer
while (tokenizer.hasMoreTokens() && !tokenizer.nextToken().equals("\n")) {
comment.append(tokenizer.nextToken()).append(" ");
}
System.out.println(comment.toString().trim());
comment.setLength(0); // Clear the comment buffer
} else if (tokenizer.nextToken().equals("/*")) {
// Found a multi-line comment, add it to the comment buffer
while (tokenizer.hasMoreTokens() && !(tokenizer.nextToken().equals("*/"))) {
comment.append(tokenizer.nextToken()).append(" ");
}
System.out.println(comment.toString().trim());
comment.setLength(0); // Clear the comment buffer
} else {
// Not a comment, reset the comment buffer and process the token
comment.setLength(0);
System.out.print(tokenizer.nextToken() + " ");
}
}
System.out.println();
}
reader.close();
}
}
这个示例中的 processComments
方法会读取指定的 Java 源代码文件,并使用 StringTokenizer 逐个处理文件中的标记。当遇到注释时(单行或多行),它会将注释内容添加到 comment
字符串构建器中,并在遇到非注释标记时输出注释内容并清空构建器。