欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

查找jar包中.class文件关键字(变量名,字符串)

程序员文章站 2022-05-16 11:21:55
...

原文链接:https://www.cnblogs.com/hithlb/p/3906151.html

侵删

package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

public class FindForJarIndex {

    public static final String path = "I:\\Android\\04test\\Wc\\app\\libs"; //jar包父目录
    public static final String keywords = "getMessageFormat"; //关键字

    public static void main(String[] args) {
        File file = new File(path);
        final Pattern p = Pattern.compile(".+\\.jar$");
        File[] files = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                if (p.matcher(pathname.getPath()).matches()) {
                    return true;
                } else {
                    return false;
                }
            }
        });

        search(files);
    }

    private static void search(File[] files) {
        try {
            for (File f : files) {
                if (f.isDirectory()) {
                    search(f.listFiles());
                } else {
                    ZipFile jar = new ZipFile(f);
                    Enumeration enumration = jar.entries();
                    while (enumration.hasMoreElements()) {
                        ZipEntry zipEntry = (ZipEntry) enumration.nextElement();

                        InputStreamReader isr = new InputStreamReader(jar.getInputStream(zipEntry));
                        BufferedReader br = new BufferedReader(isr);
                        String line = br.readLine();
                        int line_num = 1;
                        while (null != line) {
//                            System.out.println(line);
                            if (line.contains(keywords)) {
                                System.out.println(
                                    f.getPath() + "," + zipEntry.getName() + "," + "line number = "
                                        + line_num);
                            }
                            line = br.readLine();
                            line_num++;
                        }
                    }
                }
            }
        } catch (IOException io_e) {
            io_e.printStackTrace();
        }
    }
}

 

相关标签: 安卓相关