可以参考一下下面的程序: import java.io.*; import java.util.StringTokenizer;class A {}public class Read extends A { public static void phase(String fileName) { String className = ""; String superClassName = ""; try { FileReader fis = new FileReader(fileName); BufferedReader reader = new BufferedReader(fis); String line; while ((line = reader.readLine()) != null) { if (line.contains("class")) { StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreElements()) { String word = tokenizer.nextToken(); if (word.equals("class")) { if (tokenizer.hasMoreElements()) { className = tokenizer.nextToken(); } } else if (word.equals("extends")) { if (tokenizer.hasMoreElements()) { superClassName = tokenizer.nextToken(); } } } } } } catch (IOException ioex) { ioex.printStackTrace(); } System.out.println("ClassName: " + className + ", SuperClassName: " + superClassName); } /** * @param args */ public static void main(String[] args) { Read.phase("Read.java"); }}
用正则表达式匹配吧! 可以匹配 public class Test public class Test extends Object {"); public class Test extends Object implements Runnable {"); Pattern p = Pattern.compile("class\\s*(\\w+)(\\s+extends\\s+(\\w+)(\\s+.*?)?)?\\s*\\{",Pattern.DOTALL); Matcher m = p.matcher("public class Test extends Object implements Runnable {"); if(m.find()) { System.out.println(m.group(1)); System.out.println(m.group(3)); }
那个支持多行匹配,也就是 public class Test extends Object { 这样的格式都可以
import java.io.*;
import java.util.StringTokenizer;class A {}public class Read extends A { public static void phase(String fileName) {
String className = "";
String superClassName = "";
try {
FileReader fis = new FileReader(fileName);
BufferedReader reader = new BufferedReader(fis);
String line;
while ((line = reader.readLine()) != null) {
if (line.contains("class")) {
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreElements()) {
String word = tokenizer.nextToken();
if (word.equals("class")) {
if (tokenizer.hasMoreElements()) {
className = tokenizer.nextToken();
}
} else if (word.equals("extends")) {
if (tokenizer.hasMoreElements()) {
superClassName = tokenizer.nextToken();
}
}
}
}
}
} catch (IOException ioex) {
ioex.printStackTrace();
} System.out.println("ClassName: " + className
+ ", SuperClassName: "
+ superClassName);
} /**
* @param args
*/
public static void main(String[] args) {
Read.phase("Read.java");
}}
可以匹配
public class Test
public class Test extends Object {");
public class Test extends Object implements Runnable {"); Pattern p = Pattern.compile("class\\s*(\\w+)(\\s+extends\\s+(\\w+)(\\s+.*?)?)?\\s*\\{",Pattern.DOTALL);
Matcher m = p.matcher("public class Test extends Object implements Runnable {");
if(m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(3));
}
public
class
Test
extends
Object { 这样的格式都可以