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
字符串构建器中,并在遇到非注释标记时输出注释内容并清空构建器。