Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2863118
  • 博文数量: 178
  • 博客积分: 2076
  • 博客等级: 大尉
  • 技术积分: 2800
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-10 10:50
文章分类

全部博文(178)

文章存档

2010年(4)

2009年(13)

2008年(161)

我的朋友

分类: Java

2008-04-15 18:04:04

用纯java编写一个程序查找某个.java文件里的class后的类名及extends后的类名
并输出这两个类名(其它文件内容就不输出了);
可以参考一下下面的程序:
Java code
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  {");

Java code
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));
}

阅读(633) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~