代码改变世界

显示指定类型的文件

2011-09-09 13:36  Rollen Holt  阅读(674)  评论(0编辑  收藏  举报

运行结果:

package File;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileFilter;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class ListCustomTypeFile extends JFrame implements ActionListener{
	JPanel panel = new JPanel();
	JButton chooseButton = new JButton("选择文件夹");
	JLabel pathLabel = new JLabel();
	JLabel textLabel = new JLabel("请输入指定的文件扩展名");
	JTextField textField = new JTextField(20);
	JTextArea area = new JTextArea(5, 30);
	File dir = null;

	ListCustomTypeFile(){
		panel.setLayout(new FlowLayout());
		panel.add(chooseButton);
		panel.add(pathLabel);
		panel.add(textLabel);
		panel.add(textField);
		panel.add(area);
		setContentPane(panel);
		chooseButton.addActionListener(this);

		setSize(400, 400);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	@Override
	public void actionPerformed(ActionEvent e){
		JFileChooser chooser = new JFileChooser();
		chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
		chooser.showDialog(this, null);
		dir = chooser.getSelectedFile();
		pathLabel.setText(dir.toString());
		listFiles();
	}

	public void listFiles(){
		if(dir == null){
			return;
		}
		// 获取符合条件的文件数组
		File[] files = dir.listFiles(new CustomFilter());
		String str = "文件名" + "\t\t" + "文件大小" + "\t\t" + "最后修改日期\n";
		area.setText(str);
		for(File temp : files){
			str += temp.getName() + "\t\t" + temp.length() + "\t\t"
					+ new Date(temp.lastModified()) + "\n";
			area.setText(str);
		}
	}

	public final class CustomFilter implements FileFilter{
		@Override
		public boolean accept(File pathname){
			// 获取用户设定的指定扩展名
			String name = textField.getText();
			if(name == null || name.isEmpty()){
				return false;
			}
			if(!name.startsWith(".")){
				name = "." + name;
			}
			name = name.toLowerCase();
			if(pathname.getName().toLowerCase().endsWith(name)){
				return true;
			}else{
				return false;
			}
		}
	}// end inner class

	public static void main(String[] args){
		new ListCustomTypeFile();
	}
}