Le système d'exploitation Windows peut implémenter des fichiers de renommée, mais ne peut pas implémenter le renommer par lots. Cet exemple implémente la fonction de changement de nom par lots et peut être de renommer des fichiers du même type dans un dossier en fonction de certaines règles. Les utilisateurs peuvent donner des modèles de renommée et les programmes peuvent renommer les fichiers correspondants en fonction des modèles. De plus, vous pouvez ajouter des symboles spéciaux au modèle de renommée et le programme remplacera ces symboles spéciaux par le numéro de fichier renommé.
Analyse des idées:
1. Envisagez d'abord la couche de vue. Démarrer la répétition.
2. Regardez à nouveau la couche modèle. Tout d'abord, définissez la méthode de gestion des événements du bouton de navigation, créez un sélecteur de fichiers jFileChooser dans cette méthode, utilisez la méthode SetFileSelectionMode () de la classe JFileChoOser pour définir unique Classe JFileChoOser.
3. Définissez une classe pour implémenter l'interface FileFilter, enregistrer l'extension de fichier dans le constructeur de la classe, puis définir une méthode, dans laquelle la méthode Endswith () de la classe de chaîne est utilisée pour filtrer l'extension de fichier.
4. Définissez ensuite la méthode de gestion des événements du bouton Démarrer. Méthode de la classe JOptionPane, puis créez un objet defaultTableModel et utilisez la classe JTable. () Méthode de la classe jspinner pour obtenir le numéro de départ et utiliser la méthode indexof de la classe de chaîne pour obtenir la première "#" l'index de la méthode de classe de chaîne substring () est utilisée pour obtenir la chaîne de placement numérique dans le modèle et la méthode remplacement () de la classe de chaîne est utilisée pour obtenir la chaîne de placement numéro dans le modèle. Remplacez la chaîne de placement numéro dans le modèle par le format spécifié. Ensuite, utilisez la méthode ListFiles () de classe de fichiers obtient le tableau de liste de fichiers dans le dossier, utilise foreach () pour parcourir chaque fichier, formater chaque nom de fichier via la méthode format () de la classe de chaîne et utilise la méthode addrow () de la classe defaultTableModel pour tourner l'ancien fichier Ajoutez le nom et le nouveau nom au modèle de données de la table. à un nouveau nom de fichier et enfin utiliser la méthode Renameto () de la classe de fichiers Implémentez le renommage des fichiers.
Le code est le suivant:
La copie de code est la suivante:
import java.awt.eventqueue;
import java.awt.event.actionEvent;
import java.awt.event.actionListener;
Importer 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;
Importer Javax.swing.border.emptyborder;
import javax.swing.table.defaultTableModel;
import java.awt.gridbaglayout;
Importer java.awt.gridbagConstraints;
Importer java.awt.insets;
/ **
* Obtenez le filtre de la liste des fichiers
*
* @author li zhongwei
* /
La classe publique RenameFiles étend JFrame {
/ **
*
* /
Long SerialVersionUID privé statique privé = 4534371106024773867L;
classe finale privée extnameFileFilter implémente filefilter {
Examen de chaîne privée;
public extnameFileFilter (String extName) {
this.extname = extname; // Enregistrer l'extension du fichier
}
@Outrepasser
public booléen accepte (fichier pathname) {
// Extensions de fichier filtre
if (pathName.getName (). ToupperCase ()
.endSwith (extname.touppercase ()))
Retour Vrai;
retourne false;
}
}
JPANEL privé ContentPane;
Private Jtexfield Forwardfield;
Jtexfield privé Templetfield;
Dir de fichier privé;
table JTable privée;
Jtexfield privé Extnamefield;
JSPInner privé StartSpinner;
/ **
* Lancez l'application.
* /
public static void main (String [] args) {
EventQueue.invokelater (new Runnable () {
public void run () {
essayer {
RenameFiles frame = new RenameFiles ();
frame.setVisible (true);
} catch (exception e) {
e.printStackTrace ();
}
}
});
}
/ **
* Créez le cadre.
* /
Public RenameFiles () {
setResizable (false);
setTitle ("Fichier de renommer par lot");
setDefaultCloseOperation (jframe.exit_on_close);
Setbounds (100, 100, 383, 409);
contentPane = new JPanel ();
ContentPane.SetBorder (New videBorder (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.
Double.min_value};
GBL_CONTENTPANE.ROWWEMPS = NOUVEAU 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 ("Module de renommée par lots de fichiers:");
GridbagConstraints gbc_label = new GridBagConstraints ();
gbc_label.fill = gridbagConstraints.vertical;
gbc_label.insets = nouveaux encarts (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 ("Chemin de fichier:");
GridbagConstraints gbc_label_1 = new GridBagConstraints ();
gbc_label_1.anchor = gridbagConstraints.East;
gbc_label_1.fill = gridbagConstraints.vertical;
gbc_label_1.insets = nouveaux encarts (0, 0, 5, 5);
gbc_label_1.gridx = 0;
gbc_label_1.gridy = 1;
contentPane.add (label_1, gbc_label_1);
FORDERFIELD = NOUVEAU JTextField ();
FORDERFIELD.SETTEXT ("");
GridbagConstraints gbc_forderField = new GridBagConstraints ();
GBC_FORDEFFIELD.FILL = GRIDBAGCONSTRAINTS.HORIZONTAL;
GBC_FORDEFFIELD.INSETS = NOUVEAUX INSELTS (0, 0, 5, 5);
GBC_FORDEFFIELD.GRIDWIDTH = 3;
GBC_FORDEFFIELD.GRIDX = 1;
GBC_FORDEFFIELD.GRIDY = 1;
contentPane.add (FORDERFIELD, GBC_FORDEFFIELD);
JBUTTON Button = new JButton ();
Button.addactionListener (new ActionListener () {
public void ActionPerformed (ActionEvent e) {
do_button_actionperformed (e);
}
});
Button.SeTText ("Browse");
GridbagConstraints gbc_button = new GridBagConstraints ();
gbc_button.anchor = gridbagConstraints.northwest;
gbc_button.insets = nouveaux encarts (0, 0, 5, 0);
gbc_button.gridx = 4;
gbc_button.gridy = 1;
contentPane.add (bouton, gbc_button);
Jseparator séparateur_1 = new jSeparator ();
GridbagConstraints gbc_separator_1 = new GridBagConstraints ();
gbc_separator_1.fill = gridbagConstraints. both;
gbc_separator_1.insets = nouveaux encarts (0, 0, 5, 0);
gbc_separator_1.gridwidth = 5;
gbc_separator_1.gridx = 0;
gbc_separator_1.gridy = 2;
contentPane.add (séparateur_1, gbc_separator_1);
JLABEL Label_5 = new JLabel ();
Label_5.SeTText ("Utiliser # pour spécifier la position occupée par le nombre de nombres et utiliser * pour insérer le nom du fichier d'origine:");
GridbagConstraints gbc_label_5 = new GridBagConstraints ();
gbc_label_5.fill = gridbagConstraints.vertical;
GBC_LABEL_5.INSETS = Nouveaux encarts (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 ();
gbc_label_3.anchor = gridbagConstraints.East;
gbc_label_3.fill = gridbagConstraints.vertical;
GBC_LABEL_3.Insets = Nouveaux encarts (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_trempletfield = new GridBagConstraints ();
gbc_templetfield.anchor = gridbagConstraints.south;
gbc_templetfield.fill = gridbagConstraints.Horizontal;
GBC_TEMPLETFIELD.INSETS = NOUVEAUX INSEAUS (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 ("Démarrage:");
GridbagConstraints gbc_label_4 = new GridBagConstraints ();
gbc_label_4.fill = gridbagConstraints.vertical;
gbc_label_4.insets = nouveaux encarts (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 = nouveaux encarts (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 ();
gbc_label_2.fill = gridbagConstraints.horizontal;
GBC_LABEL_2.INSETS = Nouveaux encarts (0, 0, 5, 5);
gbc_label_2.gridx = 2;
gbc_label_2.gridy = 5;
contentPane.add (label_2, gbc_label_2);
JBUTTON STARTBUTTON = NOUVEAU 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.INSESTS = Nouveaux encarts (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 = nouveaux encarts (0, 0, 5, 0);
gbc_startbutton.gridx = 4;
gbc_startbutton.gridy = 5;
contentPane.add (startButton, gbc_startbutton);
Jseparator séparateur_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 encast (0, 0, 5, 0);
gbc_separator_2.gridwidth = 5;
gbc_separator_2.gridx = 0;
gbc_separator_2.gridy = 6;
contentPane.add (séparateur_2, gbc_separator_2);
Jscrollpane scrollPane = new JScrollPane ();
GridbagConstraints gbc_scrollPane = new GridBagConstraints ();
gbc_scrollpane.fill = gridbagConstraints.fot;
gbc_scrollpane.gridwidth = 5;
gbc_scrollpane.gridx = 0;
gbc_scrollpane.gridy = 7;
contentPane.add (ScrollPane, gbc_scrollPane);
table = new JTable ();
table.setModel (new defaultTableModel (nouvel objet [] [] {}, new String [] {
"Ancien nom de fichier", "nouveau nom de fichier"}));
scrollPane.setViewportView (tableau);
}
/ **
* Comment gérer l'événement de boutons de navigation
*
* @param e
* /
protégé void do_button_actionperformed (actionevent e) {
JFileChoOSer Chooser = new JFileChoOser (); // Créer un sélecteur de fichiers
// définir la sélection des dossiers
choOser.setFileSelectionMode (jFileChooser.Directories_Only);
INT Option = ChOOSER.ShowOpenDialog (this); // Afficher la boîte de dialogue ouverte
if (option == JFileChoOser.Approve_Option) {
dir = choOser.getSelectedFile (); // Obtenez le dossier sélectionné
} autre {
dir = null;
}
FORDERFIELD.SETTEXT (DIR + ""); // Afficher les informations du dossier
}
/ **
* Méthode de gestion des événements de démarrage du bouton
*
* @param e
* /
protégé void do_startbutton_actionperformed (actionevent e) {
Chaîne templet = templetfield.getText (); // Obtenez la chaîne de modèle
if (templet.isempty ()) {
JOptionPane.showMessageDialog (this, "Veuillez confirmer le modèle de renom", "Dialogue d'informations",
JOptionPane.Warning_Message);
retour;
}
// Obtenez le modèle de données de table
DefaultTableModel modèle = (defaultTableModel) table.getModel ();
Model.SetRowCount (0); // Effacer les données de la table
int bi = (entier) startspinner.getValue (); // Obtenez le numéro de départ
int index = templet.indexof ("#"); // Obtenez l'index du premier "#" "
String code = templet.substring (index); // Obtenez la chaîne du numéro de placement dans le modèle
// Remplacez la chaîne d'espace réservée numéro dans le modèle par le format spécifié
templet = templet.replace (code, "% 0" + code.length () + "d");
String extname = extnamefield.getText (). TolowerCase ();
if (extname.indexof (".") == -1)
extname = "."
// Obtenez le tableau de liste de fichiers dans le fichier
File [] files = dir.listFiles (new ExtNameFileFilter (extname));
pour (fichier de fichier: fichiers) {// tableau de fichiers variables
// format chaque nom de fichier
String name = String.format (Templet, Bi ++) + extname;
// Ajouter les anciens et nouveaux noms du fichier au modèle de données de la table
Model.Addrow (new String [] {file.getName (), name});
File parentFile = file.getParentFile (); // Obtenez l'objet de dossier où se trouve le fichier
File newFile = new File (parentFile, name);
file.renameto (newfile); // renommée de fichiers
}
}
}
L'effet est montré dans l'image: