递归查找文件 -------陈开源

原创 2006年06月05日 19:34:00
程序代码如下:
import java.io.*;
import java.util.jar.*;
import java.util.Enumeration;

/**
* <p>Title: SearchClass</p>
*
* <p>Descriptionc:查找指定目录下的class文件 </p>
* @version 1.0
*/
public class SearchClass {
static String className = "";
static int result = 0;
static boolean flag = false;

/**
* visit
*
* @param f File
* @throws Exception
* @todo 访问文件,并比较是否为要查找的class文件
*/
public static void visit(File f) throws Exception {
if (! (f.isDirectory())) {
String fileName = f.getName();
//f为jar文件
if (fileName.lastIndexOf(".jar") > 0) {
try {
JarFile jarFile = new JarFile(f);
JarEntry jarEntry = jarFile.getJarEntry(className);
if (jarEntry != null) {
result++;
System.out.println(result + ":在jar文件" + f + "中找到");
}
Enumeration e = jarFile.entries();
while (e.hasMoreElements()) {
String inname = e.nextElement().toString();
int j = inname.lastIndexOf("/");
if (j > 0) {
String suffix = inname.substring(j + 1, inname.length());
if (suffix.equals(className))
flag = true;
}
if (flag) {
result++;
System.out.println(result + ":在jar文件:" + f + "中找到");
System.out.println(inname);
flag = false;
break;
}
}

}
catch (Exception e) {
e.printStackTrace();
}
}
//f为class文件
else if (fileName.lastIndexOf(".class") > 0) {
if (fileName.equals(className)) {
result++;
System.out.println(result + ":在class文件" + f + "中找到");
}
}

}
else {
throw new Exception("发生意外!");
}

}

/**
* walk
*
* @param f File
* @todo 递归目录
*/
public static void walk(File f) {
//如果当前File是个文件,调用visit();
if (f.isFile())
try {
visit(f);
}
catch (Exception e) {
e.printStackTrace();
}
//如果当前File是个目录,存储其子目录,并递归调用walk();
else if (f.isDirectory()) {
String list[] = f.list();
for (int i = 0; i < list.length; i++)
walk(new File(f, list[i]));
}
}

/**
* main
*
* @param args String[]
* @todo 主函数
*/
public static void main(String args[]) {
if (args.length > 1) {
className = args[1] + ".class";
try {
File srcDirectory = new File(args[0]);
File firstList[] = srcDirectory.listFiles();
for (int i = 0; i < firstList.length; i++) {
if (firstList[i].exists()) {
walk(firstList[i]);
}
else
System.err.println("不能读取目录: " + srcDirectory);
}
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("搜索结果:共出现" + result + "处");
}
catch (Exception e) {
e.printStackTrace();
}
}
else {
System.out.println("输入格式有误!");
System.out.println("正确输入格式:java SearchClass 搜索目录 类名称");
}
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

递归遍历文件夹查找文件

void IsFindFile(CString strPatn, CString strwjm) { CFileFind fileFind; CString NextDir;...

Java I/O递归查找文件

递归 多线程示例

linux下c语言递归法查找文件,并打印绝对地址

c语言递归法查找指定目录下的文件或目录   本代码是个人学习过程中写下的小练笔,如果您发现问题,欢迎指正。 编译环境:linux+gcc, windows下尚未测试 #include #incl...

查找文件递归算法

  • 2013-06-24 11:24
  • 886B
  • 下载

转Linux查找文件(find命令)

转自: http://man.linuxde.net/find find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则...

locate 和 find:两个查找文件的命令

原文:http://hi.baidu.com/hunnon/blog/item/20f6a627e2b4481d8a82a1d7.html 对于初次切换到 Linux 系统的朋友来说,如果想要从命令...

linux查找文件命令find

  • 2014-08-14 14:32
  • 20KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)