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
字符串構建器中,并在遇到非注釋標記時輸出注釋內容并清空構建器。