package yqh;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class JARSearchFile extends JFrame{
JTextField jtf0=new JTextField();
JTextField jtf1=new JTextField();
JCheckBox jcb[]=new JCheckBox[3];
JTextArea jlist=new JTextArea();
public JARSearchFile(){
setTitle("漫漫长路--JAR查找文件器");
JLabel jl1=new JLabel("输入你要查找的文件 : ");
JLabel jl2=new JLabel("输入你要查找的路径 : ");
jcb[0]=new JCheckBox(" jar ",true);
jcb[0].setActionCommand("jar");
jcb[1]=new JCheckBox(" rar ");
jcb[1].setActionCommand("rar");
jcb[2]=new JCheckBox(" zip ");
jcb[2].setActionCommand("zip");
JButton jb=new JButton("确定");
Container conn=this.getContentPane();
conn.setLayout(new BorderLayout());
JPanel temp=new JPanel();
temp.setLayout(new GridLayout(0,2));
temp.add(jl1);
temp.add(jtf0);
conn.add(temp);
JPanel temp1=new JPanel();
temp1.setLayout(new GridLayout(0,2));
temp1.add(jl2);
temp1.add(jtf1);
JPanel tempAll=new JPanel();
tempAll.setLayout(new BorderLayout());
tempAll.add(temp,BorderLayout.NORTH);
tempAll.add(temp1,BorderLayout.SOUTH);
//1
conn.add(tempAll,BorderLayout.NORTH);
temp=new JPanel();
temp.setLayout(new GridLayout(1,0));
for(int i=0;i<jcb.length;i++)
temp.add(jcb[i]);
temp1=new JPanel();
temp1.setLayout(new BorderLayout());
temp1.add(jb,BorderLayout.EAST);
tempAll=new JPanel();
tempAll.setLayout(new BorderLayout());
tempAll.add(temp,BorderLayout.NORTH);
tempAll.add(temp1,BorderLayout.SOUTH);
//2
conn.add(tempAll,BorderLayout.SOUTH);
jlist.setSize(350, 200);
jlist.setText("");
jlist.setEditable(false);
conn.add(jlist);
jb.addActionListener(new myActionListener());
}
/**
* @param args
*/
public static void main(String[] args) {
JARSearchFile mf=new JARSearchFile();
mf.setSize(400,400);
mf.setVisible(true);
mf.setDefaultCloseOperation(3);
}
class myActionListener implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String searchFile=jtf0.getText();
// System.out.println(searchFile);
String searchPathStr=jtf1.getText();
File searchPath=new File(searchPathStr);
int selectInt=0;
int temp[]=new int[3];
for(int i=0;i<jcb.length;i++){
if(jcb[i].isSelected()){
temp[selectInt]=i;
selectInt++;
}
}
if(selectInt==0)return ;
String searchEnds[]=new String[selectInt];
for(int i=0;i<selectInt;i++){
searchEnds[i]=jcb[temp[i]].getActionCommand();
}
find(searchPath,searchFile,searchEnds);
System.out.println("搜索完成");
javax.swing.JOptionPane.showMessageDialog(null, "搜索完成");
}
}
class myFilter implements java.io.FileFilter{
String searchEnds[]=null;
public myFilter(String searchEnds[]){
this.searchEnds=searchEnds;
}
public boolean accept(File arg0) {
String name=arg0.getName();
for(int i=0;i<searchEnds.length;i++)
if(name.endsWith("."+searchEnds[i])){
return true;
}
return false;
}
}
public void find(File searchPath,String searchFile,String[] searchEnds){
File findOfFile[]=searchPath.listFiles(new myFilter(searchEnds));
// System.out.println("findOfFile "+findOfFile.length+findOfFile[0].getName());
jlist.setText("");
jlist.append("\n\n");
try {
// for(int i=0;i<findOfFile.length;i++){
// System.out.println("--- "+findOfFile[i].getName());
// }
//System.in.read();
for(int i=0;i<findOfFile.length;i++){
ZipInputStream myzip=new ZipInputStream(
new FileInputStream(findOfFile[i]));
ZipEntry zipFile=myzip.getNextEntry();
while(zipFile!=null){
if(zipFile.getName().indexOf(searchFile)!=-1){
jlist.append(" "+findOfFile[i].getName()+" \n");
break;
}
zipFile=myzip.getNextEntry();
}
if(findOfFile[i].isDirectory()){
find(findOfFile[i],searchFile,searchEnds);
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}