package finder;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.regex.Pattern;
import org.apache.commons.io.IOUtils;
/**
* 查找jar文件下出现指定文字的文件
*
* @author 0
*
*/
public class FileScanner
{
private JarFile dir;
private Pattern pattern;
public FileScanner(JarFile dir, String regex)
{
this.dir = dir;
pattern = Pattern.compile(regex);
}
private List<String> scanContent(JarEntry e) throws IOException
{
InputStream is = null;
List<String> collection = new ArrayList<String>();
try
{
List<String> lines = IOUtils
.readLines((is = dir.getInputStream(e)));
for (String line : lines)
{
if (pattern.matcher(line).find())
{
collection.add(line);
}
}
}
finally
{
IOUtils.closeQuietly(is);
}
return collection;
}
private void scan()
{
Enumeration<JarEntry> en = dir.entries();
while (en.hasMoreElements())
{
JarEntry e = en.nextElement();
List<String> lines = null;
try
{
if (!(lines = scanContent(e)).isEmpty())
{
System.out.println(e.getName() + ":");
for (String line : lines)
{
System.out.println(line);
}
}
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException
{
new FileScanner(
new JarFile(
"D:\\repository\\com\\explodingart\\jmusic\\1.6.4.1\\jmusic-1.6.4.1-sources.jar"),
"\\s+MAJOR\\s+|\\.MAJOR").scan();
}
}
查找源码jar包出现指定文字的小程序
最新推荐文章于 2020-02-26 13:47:16 发布