import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.File; 
import java.io.FileFilter; 

import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JSeparator; 
import javax.swing.JSpinner; 
import javax.swing.JTable; 
import javax.swing.JTextField; 
import javax.swing.border.EmptyBorder; 
import javax.swing.table.DefaultTableModel; 
import java.awt.GridBagLayout; 
import java.awt.GridBagConstraints; 
import java.awt.Insets; 

/** 
 * 获取文件列表的过滤器 
 *  
 * @author 李钟尉 
 */
public class RenameFiles extends JFrame { 

    /** 
     *  
     */
    private static final long serialVersionUID = 4534371106024773867L; 

    private final class ExtNameFileFilter implements FileFilter { 
        private String extName; 

        public ExtNameFileFilter(String extName) { 
            this.extName = extName;// 保存文件扩展名 
        } 

        @Override
        public boolean accept(File pathname) { 
            // 过滤文件扩展名 
            if (pathname.getName().toUpperCase() 
                    .endsWith(extName.toUpperCase())) 
                return true; 
            return false; 
        } 
    } 

    private JPanel contentPane; 
    private JTextField forderField; 
    private JTextField templetField; 
    private File dir; 
    private JTable table; 
    private JTextField extNameField; 
    private JSpinner startSpinner; 

    /** 
     * Launch the application. 
     */
    public static void main(String[] args) { 
        EventQueue.invokeLater(new Runnable() { 
            public void run() { 
                try { 
                    RenameFiles frame = new RenameFiles(); 
                    frame.setVisible(true); 
                } catch (Exception e) { 
                    e.printStackTrace(); 
                } 
            } 
        }); 
    } 

    /** 
     * Create the frame. 
     */
    public RenameFiles() { 
        setResizable(false); 
        setTitle("文件批量重命名"); 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        setBounds(100, 100, 383, 409); 
        contentPane = new JPanel(); 
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
        setContentPane(contentPane); 
        GridBagLayout gbl_contentPane = new GridBagLayout(); 
        gbl_contentPane.columnWidths = new int[] { 72, 54, 60, 87, 91, 0 }; 
        gbl_contentPane.rowHeights = new int[] { 25, 25, 10, 25, 24, 25, 2, 
                216, 0 }; 
        gbl_contentPane.columnWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0, 
                Double.MIN_VALUE }; 
        gbl_contentPane.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0, 
                0.0, 0.0, 0.0, Double.MIN_VALUE }; 
        contentPane.setLayout(gbl_contentPane); 

        JLabel label = new JLabel(); 
        label.setText("文件批量重命名模块:"); 
        GridBagConstraints gbc_label = new GridBagConstraints(); 
        gbc_label.fill = GridBagConstraints.VERTICAL; 
        gbc_label.insets = new Insets(0, 0, 5, 5); 
        gbc_label.gridwidth = 3; 
        gbc_label.gridx = 1; 
        gbc_label.gridy = 0; 
        contentPane.add(label, gbc_label); 

        JLabel label_1 = new JLabel(); 
        label_1.setText("文件路径:"); 
        GridBagConstraints gbc_label_1 = new GridBagConstraints(); 
        gbc_label_1.anchor = GridBagConstraints.EAST; 
        gbc_label_1.fill = GridBagConstraints.VERTICAL; 
        gbc_label_1.insets = new Insets(0, 0, 5, 5); 
        gbc_label_1.gridx = 0; 
        gbc_label_1.gridy = 1; 
        contentPane.add(label_1, gbc_label_1); 

        forderField = new JTextField(); 
        forderField.setText(""); 
        GridBagConstraints gbc_forderField = new GridBagConstraints(); 
        gbc_forderField.fill = GridBagConstraints.HORIZONTAL; 
        gbc_forderField.insets = new Insets(0, 0, 5, 5); 
        gbc_forderField.gridwidth = 3; 
        gbc_forderField.gridx = 1; 
        gbc_forderField.gridy = 1; 
        contentPane.add(forderField, gbc_forderField); 

        JButton button = new JButton(); 
        button.addActionListener(new ActionListener() { 
            public void actionPerformed(ActionEvent e) { 
                do_button_actionPerformed(e); 
            } 
        }); 
        button.setText("浏览"); 
        GridBagConstraints gbc_button = new GridBagConstraints(); 
        gbc_button.anchor = GridBagConstraints.NORTHWEST; 
        gbc_button.insets = new Insets(0, 0, 5, 0); 
        gbc_button.gridx = 4; 
        gbc_button.gridy = 1; 
        contentPane.add(button, gbc_button); 

        JSeparator separator_1 = new JSeparator(); 
        GridBagConstraints gbc_separator_1 = new GridBagConstraints(); 
        gbc_separator_1.fill = GridBagConstraints.BOTH; 
        gbc_separator_1.insets = new Insets(0, 0, 5, 0); 
        gbc_separator_1.gridwidth = 5; 
        gbc_separator_1.gridx = 0; 
        gbc_separator_1.gridy = 2; 
        contentPane.add(separator_1, gbc_separator_1); 

        JLabel label_5 = new JLabel(); 
        label_5.setText("使用#可以指定数字计数所占的位置,使用*可以插入原文件名:"); 
        GridBagConstraints gbc_label_5 = new GridBagConstraints(); 
        gbc_label_5.fill = GridBagConstraints.VERTICAL; 
        gbc_label_5.insets = new Insets(0, 0, 5, 0); 
        gbc_label_5.gridwidth = 5; 
        gbc_label_5.gridx = 0; 
        gbc_label_5.gridy = 3; 
        contentPane.add(label_5, gbc_label_5); 

        JLabel label_3 = new JLabel(); 
        label_3.setText("  模板:"); 
        GridBagConstraints gbc_label_3 = new GridBagConstraints(); 
        gbc_label_3.anchor = GridBagConstraints.EAST; 
        gbc_label_3.fill = GridBagConstraints.VERTICAL; 
        gbc_label_3.insets = new Insets(0, 0, 5, 5); 
        gbc_label_3.gridx = 0; 
        gbc_label_3.gridy = 4; 
        contentPane.add(label_3, gbc_label_3); 

        templetField = new JTextField(); 
        templetField.setText("catrestaurant###"); 
        GridBagConstraints gbc_templetField = new GridBagConstraints(); 
        gbc_templetField.anchor = GridBagConstraints.SOUTH; 
        gbc_templetField.fill = GridBagConstraints.HORIZONTAL; 
        gbc_templetField.insets = new Insets(0, 0, 5, 5); 
        gbc_templetField.gridwidth = 3; 
        gbc_templetField.gridx = 1; 
        gbc_templetField.gridy = 4; 
        contentPane.add(templetField, gbc_templetField); 

        JLabel label_4 = new JLabel(); 
        label_4.setText("开始于:"); 
        GridBagConstraints gbc_label_4 = new GridBagConstraints(); 
        gbc_label_4.fill = GridBagConstraints.VERTICAL; 
        gbc_label_4.insets = new Insets(0, 0, 5, 5); 
        gbc_label_4.gridx = 0; 
        gbc_label_4.gridy = 5; 
        contentPane.add(label_4, gbc_label_4); 

        startSpinner = new JSpinner(); 
        GridBagConstraints gbc_startSpinner = new GridBagConstraints(); 
        gbc_startSpinner.fill = GridBagConstraints.HORIZONTAL; 
        gbc_startSpinner.insets = new Insets(0, 0, 5, 5); 
        gbc_startSpinner.gridx = 1; 
        gbc_startSpinner.gridy = 5; 
        contentPane.add(startSpinner, gbc_startSpinner); 

        JLabel label_2 = new JLabel(); 
        label_2.setText("  扩展名:"); 
        GridBagConstraints gbc_label_2 = new GridBagConstraints(); 
        gbc_label_2.fill = GridBagConstraints.HORIZONTAL; 
        gbc_label_2.insets = new Insets(0, 0, 5, 5); 
        gbc_label_2.gridx = 2; 
        gbc_label_2.gridy = 5; 
        contentPane.add(label_2, gbc_label_2); 

        JButton startButton = new JButton(); 
        startButton.addActionListener(new ActionListener() { 
            public void actionPerformed(ActionEvent e) { 
                do_startButton_actionPerformed(e); 
            } 
        }); 

        extNameField = new JTextField(); 
        extNameField.setText("jpg"); 
        GridBagConstraints gbc_extNameField = new GridBagConstraints(); 
        gbc_extNameField.fill = GridBagConstraints.HORIZONTAL; 
        gbc_extNameField.insets = new Insets(0, 0, 5, 5); 
        gbc_extNameField.gridx = 3; 
        gbc_extNameField.gridy = 5; 
        contentPane.add(extNameField, gbc_extNameField); 
        startButton.setText("开始"); 
        GridBagConstraints gbc_startButton = new GridBagConstraints(); 
        gbc_startButton.anchor = GridBagConstraints.NORTH; 
        gbc_startButton.insets = new Insets(0, 0, 5, 0); 
        gbc_startButton.gridx = 4; 
        gbc_startButton.gridy = 5; 
        contentPane.add(startButton, gbc_startButton); 

        JSeparator separator_2 = new JSeparator(); 
        GridBagConstraints gbc_separator_2 = new GridBagConstraints(); 
        gbc_separator_2.anchor = GridBagConstraints.NORTH; 
        gbc_separator_2.fill = GridBagConstraints.HORIZONTAL; 
        gbc_separator_2.insets = new Insets(0, 0, 5, 0); 
        gbc_separator_2.gridwidth = 5; 
        gbc_separator_2.gridx = 0; 
        gbc_separator_2.gridy = 6; 
        contentPane.add(separator_2, gbc_separator_2); 

        JScrollPane scrollPane = new JScrollPane(); 
        GridBagConstraints gbc_scrollPane = new GridBagConstraints(); 
        gbc_scrollPane.fill = GridBagConstraints.BOTH; 
        gbc_scrollPane.gridwidth = 5; 
        gbc_scrollPane.gridx = 0; 
        gbc_scrollPane.gridy = 7; 
        contentPane.add(scrollPane, gbc_scrollPane); 

        table = new JTable(); 
        table.setModel(new DefaultTableModel(new Object[][] {}, new String[] { 
                "旧文件名", "新文件名" })); 
        scrollPane.setViewportView(table); 
    } 

    /** 
     * 浏览按钮的事件处理方法 
     *  
     * @param e 
     */
    protected void do_button_actionPerformed(ActionEvent e) { 
        JFileChooser chooser = new JFileChooser();// 创建文件选择器 
        // 设置只选择文件夹 
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
        int option = chooser.showOpenDialog(this);// 显示打开对话框 
        if (option == JFileChooser.APPROVE_OPTION) { 
            dir = chooser.getSelectedFile();// 获取选择的文件夹 
        } else { 
            dir = null; 
        } 
        forderField.setText(dir + "");// 显示文件夹信息 
    } 

    /** 
     * 开始按钮的事件处理方法 
     *  
     * @param e 
     */
    protected void do_startButton_actionPerformed(ActionEvent e) { 
        String templet = templetField.getText();// 获取模板字符串 
        if (templet.isEmpty()) { 
            JOptionPane.showMessageDialog(this, "请确定重命名模板", "信息对话框", 
                    JOptionPane.WARNING_MESSAGE); 
            return; 
        } 
        // 获取表格数据模型 
        DefaultTableModel model = (DefaultTableModel) table.getModel(); 
        model.setRowCount(0);// 清除表格数据 
        int bi = (Integer) startSpinner.getValue();// 获取起始编号 
        int index = templet.indexOf("#");// 获取第一个“#”的索引 
        String code = templet.substring(index);// 获取模板中数字占位字符串 
        // 把模板中数字占位字符串替换为指定格式 
        templet = templet.replace(code, "%0" + code.length() + "d"); 
        String extName = extNameField.getText().toLowerCase(); 
        if (extName.indexOf(".") == -1) 
            extName = "." + extName; 
        // 获取文件中文件列表数组 
        File[] files = dir.listFiles(new ExtNameFileFilter(extName)); 
        for (File file : files) {// 变量文件数组 
            // 格式化每个文件名称 
            String name = String.format(templet, bi++) + extName; 
            // 把文件的旧名称与新名称添加到表格的数据模型 
            model.addRow(new String[] { file.getName(), name }); 
            File parentFile = file.getParentFile();// 获取文件所在文件夹对象 
            File newFile = new File(parentFile, name); 
            file.renameTo(newFile);// 文件重命名 
        } 
    } 
} 

最近下载更多
chuangyou  LV8 7月16日
liangge2115  LV27 2022年12月25日
sswert  LV2 2022年3月18日
dongzhan  LV12 2020年12月7日
2196316269  LV10 2020年11月24日
1qw23456  LV10 2020年7月15日
a820244  LV2 2020年5月17日
houliukou  LV38 2020年2月16日
121096056  LV9 2019年12月17日
vosilname  LV1 2019年8月6日
最近浏览更多
dearxo2014  LV1 11月9日
漫步的海星  LV4 2023年9月25日
shuiqing_cjn  LV1 2023年4月7日
桃花人  LV6 2023年4月7日
微信网友_5992582549164032  LV6 2022年12月28日
liangge2115  LV27 2022年12月24日
luo110012  LV9 2022年11月24日
是你爸爸啊100  LV5 2022年8月8日
好的好的  LV8 2022年7月4日
liys1234  LV9 2022年4月25日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友