Batch renaming of files in Java

Source: Internet
Author: User

Windows

Train of Thought Analysis:

The Code is as follows:

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;/*** filter for getting the file list ** @ author Li Zhongwei */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; // save the File extension} @ Override public boolean accept (File pathname) {// filter the File extension 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 ("batch object renaming"); setdefaclocloseoperation (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 (); iterator = 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 ("batch file renaming module:"); 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 ("file path:"); GridBagConstraints gbc_label_1 = new GridBagConstraints (); constraint = 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 actionreceivmed (ActionEvent e) {do_button_actionreceivmed (e) ;}}); button. setText ("Browse"); 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 (); response = GridBagConstraints. BOTH; gbc_separator_1.insets = new Insets (0, 0, 5, 0); Limit = 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 ("use # To specify the position occupied by the number count, use * to insert the original file name :"); 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 ("template:"); GridBagConstraints gbc_label_3 = new GridBagConstraints (); Limit = limit. 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 ("starting at:"); GridBagConstraints gbc_label_4 = new GridBagConstraints (); Limit = limit. 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 ("Extension:"); GridBagConstraints gbc_label_2 = new GridBagConstraints (); constraint = constraint. 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 actionreceivmed (ActionEvent e) {do_startbutton_actionreceivmed (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 ("START"); 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 (); condition = GridBagConstraints. NORTH; gbc_separator_2.fill = GridBagConstraints. HORIZONTAL; gbc_separator_2.insets = new Insets (0, 0, 5, 0); bytes = 5; gbc_separator_2.gridx = 0; gbc_separator_2.gridy = 6; contentPane. add (separator_2, clerk); JScrollPane scrollPane = new JScrollPane (); GridBagConstraints gbc_scrollPane = new GridBagConstraints (); condition = 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 [] {"old file name", "new file name"}); scrollPane. setViewportView (table);}/*** event handling method of the browser button ** @ param e */protected void do_button_actionreceivmed (ActionEvent e) {JFileChooser chooser = new JFileChooser (); // create a file selector // set to select only the folder chooser. setFileSelectionMode (JFileChooser. DIRECTORIES_ONLY); int option = chooser. showOpenDialog (this); // display the open dialog box if (option = JFileChooser. APPROVE_OPTION) {dir = chooser. getSelectedFile (); // get the selected folder} else {dir = null;} forderField. setText (dir + ""); // display Folder Information}/*** start button event handling method ** @ param e */protected void do_startbutton_actionreceivmed (ActionEvent e) {String templet = templetField. getText (); // obtain the template string if (templet. isEmpty () {JOptionPane. showMessageDialog (this, "Please confirm to rename the template", "Information dialog box", JOptionPane. WARNING_MESSAGE); return;} // obtain the table data model DefaultTableModel model = (DefaultTableModel) table. getModel (); model. setRowCount (0); // clear the table data int bi = (Integer) startSpinner. getValue (); // get the start number int index = templet. indexOf ("#"); // obtain the first "#" index String code = templet. substring (index); // obtain the number placeholder string in the template // replace the number placeholder string in the template with the specified format templet = templet. replace (code, "% 0" + code. length () + "d"); String extName = extNameField. getText (). toLowerCase (); if (extName. indexOf (". ") =-1) extName = ". "+ extName; // obtain the File list array File [] files = dir. listFiles (new ExtNameFileFilter (extName); for (File file: files) {// variable File array // format the name of each file String name = String. format (templet, bi ++) + extName; // Add the old name and new name of the file to the data model of the table. addRow (new String [] {file. getName (), name}); File parentFile = file. getParentFile (); // get the File folder object File newFile = new file (parentFile, name); File. renameTo (newFile); // rename the file }}}

Effect

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.