该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
package fcom.hqa.fileDistillApp;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import java.awt.GridLayout;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JTextField;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
public class TestBuilder extends JFrame {
private static final long serialVersionUID = 1L;
int done;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;
private JFileChooser jfd;
private JButton btnNewButton;
private String fileDirec=null;
private List files=new ArrayList();
private JButton button;
private String targetFileDirec;
private String fileExtensions;
private JProgressBar prob2;
private JProgressBar prob;
private JButton btnNewButton_1;
private JButton btnNewButton_2;
private double totalFileSize=0;
private double currentFileSize=0;
private double percent=0;
private double percent2=0;
private double temSize=0;
private double temSize2=0;
private JButton jbtem;
private JPanel panel_2;
private JComboBox jcb;
@SuppressWarnings("static-access")
public TestBuilder() {
this.setTitle("欢迎使用文件提取器");
getContentPane().setLayout(new BorderLayout());
JPanel panel = new JPanel();
getContentPane().add(panel);
panel.setLayout(new GridLayout(5,1));
JPanel panel_3 = new JPanel();
this.setIconImage(new ImageIcon("images/qq.png").getImage());
panel.add(panel_3);
panel_3.setLayout(new FlowLayout(FlowLayout.LEFT,5, 30));
btnNewButton= new JButton("\u9009\u62E9\u539F\u6587\u4EF6\u76EE\u5F55");
btnNewButton.setPreferredSize(new Dimension(150, 30));
panel_3.add(btnNewButton);
textField = new JTextField();
textField.setText("\u6E90\u6587\u4EF6\u76EE\u5F55");
textField.setPreferredSize(new Dimension(360, 30));
textField.setHorizontalAlignment(JTextField.CENTER);
textField.setEditable(false);
panel_3.add(textField);
JPanel panel_1 = new JPanel();
panel_1.setLayout(new FlowLayout(FlowLayout.LEFT,5, 30));
panel.add(panel_1);
button= new JButton("\u9009\u62E9\u76EE\u6807\u6587\u4EF6\u76EE\u5F55");
button.setPreferredSize(new Dimension(150, 30));
panel_1.add(button);
textField_1 = new JTextField();
textField_1.setText("\u76EE\u6807\u6587\u4EF6\u76EE\u5F55");
textField_1.setPreferredSize(new Dimension(360, 30));
textField_1.setHorizontalAlignment(JTextField.CENTER);
textField_1.setEditable(false);
panel_1.add(textField_1);
panel_2= new JPanel();
panel.add(panel_2);
JPanel panel_4 = new JPanel();
panel_4.setBackground(Color.GREEN);
panel_1.setLayout(new FlowLayout(FlowLayout.LEFT,5, 30));
panel.add(panel_4);
panel_4.setLayout(new BorderLayout());
JPanel panel_5 = new JPanel();
JPanel panel_7 = new JPanel();
JPanel panel_8 = new JPanel();
panel_5.setLayout(new GridLayout(2, 1));
btnNewButton_1= new JButton("\u70B9\u51FB\u63D0\u53D6\u6587\u4EF6");
btnNewButton_2 = new JButton("\u6253\u5F00\u76EE\u6807\u6587\u4EF6");
btnNewButton_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
panel_5.add(panel_7);
panel_5.add(panel_8);
panel_8.add(btnNewButton_2);
panel_7.add(btnNewButton_1);
panel_4.add(panel_5, BorderLayout.WEST);
JPanel panel_6 = new JPanel();
JPanel panel_9 = new JPanel();
panel_6.setLayout(new GridLayout(3,1));
prob = new JProgressBar();
prob.setStringPainted(true);
prob.setIndeterminate(false);
panel_6.add(prob);
textField_3 = new JTextField();
textField_3.setText("正在处理文件");
textField_3.setHorizontalAlignment(JTextField.CENTER);
textField_3.setEditable(false);
panel_6.add(textField_3);
textField_3.setColumns(10);
prob2= new JProgressBar();
prob2.setStringPainted(true);
prob2.setIndeterminate(false);
panel_6.add(prob2);
panel_4.add(panel_6, BorderLayout.CENTER);
panel_4.add(panel_9, BorderLayout.EAST);
DefaultComboBoxModel model=new DefaultComboBoxModel();
model.addElement("选择");
model.addElement("pdf");
model.addElement("jpg");
model.addElement("png");
model.addElement("avi");
model.addElement("txt");
model.addElement("gif");
model.addElement("mp4");
model.addElement("mp3");
model.addElement("doc");
model.addElement("mkv");
model.addElement("flv");
model.addElement("mov");
model.addElement("rmvb");
model.addElement("wmv");
model.addElement("xls");
model.addElement("html");
model.addElement("java");
model.addElement("zip");
model.addElement("class");
model.addElement("dll");
model.addElement("exe");
model.addElement("其他");
panel_2.setLayout(new FlowLayout(FlowLayout.LEFT,5, 30));
textField_2 = new JTextField();
textField_2.setText("请选择您要提取文件的后缀名");
textField_2.setPreferredSize(new Dimension(440, 30));
textField_2.setHorizontalAlignment(JTextField.CENTER);
textField_2.setEditable(false);
panel_2.add(textField_2);
jcb=new JComboBox();
jcb.setModel(model);
jcb.setPreferredSize(new Dimension(60, 30));
jbtem=new JButton("确定");
jbtem.setEnabled(false);
panel_2.add(jbtem);
panel_2.add(jcb);
JPanel panel_10 = new JPanel();
panel_10.setBorder (BorderFactory.createTitledBorder ("版权声明"));
panel.add(panel_10);
JLabel lblbyMooncake = new JLabel("\u672C\u8F6F\u4EF6\u5B8C\u5168\u5BF9\u5916\u5F00\u653E\uFF0C\u5927\u5BB6\u53EF\u4EE5\u968F\u4FBF\u7528\uFF01by MoonCake");
panel_10.add(lblbyMooncake);
jfd = new JFileChooser();
jfd.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
this.setSize(600, 400);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
jfd.showDialog(new JLabel(), "选择");
textField_1.setText(jfd.getSelectedFile().toString());
targetFileDirec=textField_1.getText();
System.out.println(targetFileDirec);
}
});
btnNewButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
jfd.showDialog(new JLabel(), "选择");
textField.setText(jfd.getSelectedFile().toString());
fileDirec=textField.getText();
System.out.println(fileDirec);
}
});
jcb.addItemListener(new ItemListener(){
@Override
public void itemStateChanged(ItemEvent e) {
btnNewButton.setEnabled(true);
button.setEnabled(true);
jbtem.setEnabled(true);
textField_2.setEditable(false);
fileExtensions=jcb.getSelectedItem().toString();
textField_2.setText("请选择您要提取文件的后缀名("+fileExtensions+")");
System.out.println(fileExtensions);
if(fileExtensions==null || "".equals(fileExtensions)||"选择".equals(fileExtensions)){
textField_2.setText("请选择后缀名!!!");
btnNewButton_1.setEnabled(false);
btnNewButton_2.setEnabled(false);
}else{
btnNewButton_1.setEnabled(true);
btnNewButton_2.setEnabled(true);
}
if("其他".equals(fileExtensions)){
textField_2.setEditable(true);
textField_2.setText("请删除此处文字,并输入后缀名(格式:txt、mp4..)");
btnNewButton_1.setEnabled(false);
btnNewButton_2.setEnabled(false);
jbtem.setEnabled(true);
}
}
});
jbtem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
fileExtensions=textField_2.getText();
jbtem.setEnabled(false);
if(fileExtensions.length()>5||Pattern.compile("[0-9]+?").matcher(fileExtensions).find()||Pattern.compile("[\\u4e00-\\u9fa5]+").matcher(fileExtensions).find()){
textField_2.setText("后缀名不合法,重新输入!");
btnNewButton_1.setEnabled(false);
btnNewButton_2.setEnabled(false);
btnNewButton.setEnabled(false);
button.setEnabled(false);
jbtem.setEnabled(true);
return;
}else{
btnNewButton_1.setEnabled(true);
btnNewButton_2.setEnabled(true);
btnNewButton.setEnabled(true);
button.setEnabled(true);
textField_2.setText("请继续操作!!您填写的后缀名是"+fileExtensions);
jbtem.setEnabled(false);
textField_2.setEditable(false);
}
}
});
btnNewButton_1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
done=0;
percent=0;
percent2=0;
if(fileExtensions==null || "".equals(fileExtensions)||"选择".equals(fileExtensions)){
System.out.println(fileExtensions);
textField_2.setText("请选择后缀名!!!");
btnNewButton_1.setEnabled(false);
btnNewButton_2.setEnabled(false);
return;
}else{
btnNewButton_1.setEnabled(true);
btnNewButton_2.setEnabled(true);
jbtem.setEnabled(false);
}
if(fileDirec==null || targetFileDirec==null){
textField_2.setText("请先选择文件路径!!!");
textField_2.setEditable(false);
return;
}
new Thread(){
public void run() {
btnNewButton_1.setEnabled(false);
btnNewButton_2.setEnabled(false);
btnNewButton.setEnabled(false);
button.setEnabled(false);
jcb.setEnabled(false);
File f=new File(fileDirec);
Boolean flag=false;
int count=0;
searchAll(f);
for(File file:files){
if(file.getName().substring(file.getName().lastIndexOf(".")+1).equalsIgnoreCase(fileExtensions)){
flag=true;
count++;
}
}
if(flag){
textField_2.setText("共扫描到"+count+"个后缀名为"+fileExtensions+"的文件!正在准备提取.....");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}else{
textField_2.setText("共扫描到"+0+"个后缀名为"+fileExtensions+"的文件!请重新选择!");
jcb.setEnabled(true);
btnNewButton.setEnabled(true);
button.setEnabled(true);
return;
}
for( File file:files){
String fileExtensions1=file.getName().substring(file.getName().lastIndexOf(".")+1);
if(fileExtensions1.equalsIgnoreCase(fileExtensions)&&file.getName().contains(".")){
totalFileSize=file.length()+totalFileSize;
}
}
InputStream in=null;
FileOutputStream fos=null;
BufferedInputStream bis=null;
for( File file:files){
temSize2=0;
String fileExtensions1=file.getName().substring(file.getName().lastIndexOf(".")+1);
if(fileExtensions1.equalsIgnoreCase(fileExtensions)&&file.getName().contains(".")){
currentFileSize=file.length();
try {
textField_3.setText("正在提取文件"+file.getName()+".....");
System.out.println(file.getName()+"正在提取........");
in=new FileInputStream(file);
bis=new BufferedInputStream(in);
fos = new FileOutputStream(targetFileDirec +"\\"+file.getName());
byte[] b = new byte[1024];
int i=0;
while((i=bis.read(b))!= -1){
fos.write(b, 0, i);
temSize+=b.length;
temSize2+=b.length;
percent=temSize/totalFileSize;
percent2=temSize2/currentFileSize;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}else{
continue;
}
}
textField_3.setText("感谢使用!");
textField_2.setText("全部文件提取完成!");
done=1;
btnNewButton_1.setEnabled(true);
btnNewButton_2.setEnabled(true);
btnNewButton.setEnabled(true);
jcb.setEnabled(true);
button.setEnabled(true);
}
}.start();
}
});
btnNewButton_2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
java.awt.Desktop.getDesktop().open(new File(targetFileDirec));
} catch (Exception e1) {
textField_2.setText("目标路径不存在!");
e1.printStackTrace();
}
}
});
}
public void searchAll(File f){
if(f!=null){
if(f.isDirectory()){
File[] fileArray=f.listFiles();
if(fileArray!=null){
for(int i=0;i
searchAll(fileArray[i]);
}
}
}else{
textField_2.setText(f.getAbsolutePath());
files.add(f);
}
}
}
public static void main(String[] args) {
TestBuilder t=new TestBuilder();
int i=0;
int j=0;
while(i<=100) {
i=(int)(t.percent*100);
j=(int)(t.percent2*100);
try {
t.prob.setValue(j);
t.prob2.setValue(i);
if(t.done==1){
t.prob.setValue(100);
t.prob2.setValue(100);
}
Thread.sleep(10);
} catch (Exception e) {
e.getStackTrace();
}
}
}
}