Das Windows -Betriebssystem kann umbenannte Dateien implementieren, kann jedoch keine Batch -Umbenennung implementieren. Dieses Beispiel implementiert die Batch -Umbenennungsfunktion und kann die Umbenennung von Dateien desselben Typs in einem Ordner gemäß bestimmten Regeln batchieren. Benutzer können Umbenennungsvorlagen und Programme entsprechende Dateien gemäß den Vorlagen umbenennen. Darüber hinaus können Sie der Umbenennungsvorlage spezielle Symbole hinzufügen, und das Programm ersetzt diese speziellen Symbole durch die umbenannte Dateinummer.
Ideenanalyse:
1. Schauen Sie sich die Ansichtsschicht an. Starten Sie die Wiederholung.
2. Schauen Sie sich die Modellschicht erneut an. Definieren Sie zunächst die Ereignisbearbeitungsmethode der Browsing -Taste, erstellen Sie in dieser Methode einen JFilechooser -Dateiauswahlschalter, verwenden JFILECHOOSER -KLASSE.
3. Definieren Sie eine Klasse, um die Dateifilter -Schnittstelle zu implementieren, die Dateierweiterung im Konstruktor der Klasse zu speichern und dann eine Methode zu definieren, bei der die Endswith () -Methode der String -Klasse zum Filter der Dateierweiterung verwendet wird.
4. Definieren Sie dann die Ereignisbearbeitungsmethode der Start -Taste. Methode der JOPTIONPANE -Klasse und dann ein Standard -TableModel -Objekt und verwenden Sie die JTable -Klasse. () Methode der JSPINNER -Klasse zum Abrufen der Startnummer und zur Verwendung der Index -Methode der String -Klasse, um die erste "#" zu erhalten. Der Index der String -Klasse substring () wird verwendet, um die Number -Platzhalterzeichenfolge in der Vorlage zu erhalten und die Ersatz () -Methode der String -Klasse wird verwendet, um die Number -Platzhalterzeichenfolge in der Vorlage zu erhalten. Ersetzen Sie die Platzhalterschnur in der Vorlage durch das angegebene Format. Verwenden Sie dann die Methode der Dateiklasse ListFiles (), die das Dateilisten -Array im Ordner erhält, verwendet foreach (), um jede Datei durchzuführen, jeden Dateinamen über die Format () -Methode der Zeichenfolgeklasse formatieren und die addrow () -Methode verwendet Fügen Sie die alte Datei den Namen und den neuen Namen dem Datenmodell der Tabelle hinzu. zu einem neuen Dateinamen und schließlich die Methode Renameto () der Dateiklasse implementieren Datei umbenannt.
Der Code ist wie folgt:
Die Codekopie lautet wie folgt:
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;
importieren 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;
importieren javax.swing.jtextfield;
import Javax.swing.border.EmptyBorder;
import Javax.swing.table.DefaultTablemodel;
importieren java.awt.gridbaglayout;
importieren java.awt.gridbagconstraints;
import Java.awt.insets;
/**
* Holen Sie sich den Filter für die Dateiliste
*
* @Author Li Zhongwei
*/
öffentliche Klasse RenameFiles erweitert JFrame {
/**
*
*/
Private statische endgültige lange Serialversionuid = 4534371106024773867L;
private endgültige Klasse ExtnameFileFilter implementiert FileFilter {
private Zeichenfolge Extname;
public extnameFileFilter (String extname) {
this.extName = extname; // Dateierweiterung speichern
}
@Override
public boolean Accept (Dateipfadname) {
// Filterdateierweiterungen
if (pathname.getName (). touppercase ()
.endswith (extname.touppercase ())))
zurückkehren;
false zurückgeben;
}
}
Private Jpanel ContentPane;
Private Jtextfield Forwardfield;
Private Jtextfield Templetfield;
private Datei Dir;
Privatjtable Tisch;
Private JTextfield Extnamefield;
Private Jspinnner Startspinner;
/**
* Starten Sie die Anwendung.
*/
public static void main (String [] args) {
EventQueue.invokelater (new Runnable () {
public void run () {
versuchen {
RenameFiles Frame = new RenameFiles ();
Frame.SetVisible (True);
} catch (Ausnahme e) {
E. printstacktrace ();
}
}
});
}
/**
* Erstellen Sie den Rahmen.
*/
public nameFiles () {
setResizable (falsch);
settitle ("Datei -Batch -Umbenennen");
setDefaultCloseOperation (jframe.exit_on_close);
Setbounds (100, 100, 383, 409);
contentPane = new jpanel ();
ContentPane.SetBorder (neuer leererBorder (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 = neues double [] {0,0, 0,0, 0,0, 0,0, 0,0,,
Double.min_value};
gbl_contentPane.rowgewichtet = neues 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 ("Datei -Batch -Modul umbenennen:");
GridbagConstraints gbc_label = new GridbagConstraints ();
gbc_label.fill = gridbagConstraints.vertical;
gbc_label.insets = neue Insets (0, 0, 5, 5);
gbc_label.gridwidth = 3;
gbc_label.gridx = 1;
gbc_label.gridy = 0;
contentPane.add (Etikett, gbc_label);
JLabel Label_1 = new JLabel ();
label_1.setText ("Dateipfad:");
GridbagConstraints gbc_label_1 = neue GridbagConstraints ();
gbc_label_1.anchor = gridbagConstraints.East;
gbc_label_1.fill = gridbagConstraints.vertical;
gbc_label_1.insets = neue Insets (0, 0, 5, 5);
gbc_label_1.gridx = 0;
gbc_label_1.gridy = 1;
contentPane.add (Label_1, gbc_label_1);
fderfield = new JTextField ();
fderfield.setText ("");
GridbagConstraints gbc_forderfield = new GridbagConstraints ();
gbc_forderfield.fill = gridbagConstraints.horizontal;
gbc_forderfield.insets = neue Insets (0, 0, 5, 5);
gbc_forderfield.gridwidth = 3;
gbc_forderfield.gridx = 1;
gbc_forderfield.gridy = 1;
contentPane.add (fderfield, gbc_forderfield);
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 = neue Insets (0, 0, 5, 0);
gbc_button.gridx = 4;
gbc_button.gridy = 1;
contentPane.add (Button, gbc_button);
JSEPARATOR TEparator_1 = new JSeParator ();
GridbagConstraints gbc_separator_1 = neue GridbagConstraints ();
gbc_separator_1.fill = gridbagconstraints.both;
gbc_separator_1.insets = neue 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 ("Verwenden Sie # #, um die von der Anzahl der Zahlen besetzte Position anzugeben, und verwenden Sie * den Original -Dateinamen einfügen:");
GridbagConstraints gbc_label_5 = new GridbagConstraints ();
gbc_label_5.fill = gridbagConstraints.vertical;
gbc_label_5.insets = neue 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 ("Vorlage:");
GridbagConstraints gbc_label_3 = neue GridbagConstraints ();
gbc_label_3.anchor = gridbagConstraints.East;
gbc_label_3.fill = gridbagConstraints.vertical;
gbc_label_3.insets = neue 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 = neue 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 ("startet:");
GridbagConstraints gbc_label_4 = neue GridbagConstraints ();
gbc_label_4.fill = gridbagConstraints.vertical;
gbc_label_4.insets = neue Insets (0, 0, 5, 5);
gbc_label_4.gridx = 0;
gbc_label_4.gridy = 5;
contentPane.add (Label_4, gbc_label_4);
startspinner = new jspinnner ();
GridbagConstraints GBC_StartSpinner = New GridbagConstraints ();
gbc_startspinner.fill = gridbagconstraints.horizontal;
gbc_startspinner.insets = neue 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 ("Erweiterung:");
GridbagConstraints gbc_label_2 = neue GridbagConstraints ();
gbc_label_2.fill = gridbagconstraints.horizontal;
gbc_label_2.insets = neue 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 = neue 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 = neue Insets (0, 0, 5, 0);
gbc_startbutton.gridx = 4;
gbc_startbutton.gridy = 5;
contentPane.add (startbutton, gbc_startbutton);
JSEPARATOR TEparator_2 = new JSEparator ();
GridbagConstraints gbc_separator_2 = neue GridbagConstraints ();
gbc_separator_2.anchor = gridbagConstraints.north;
gbc_separator_2.fill = gridbagconstraints.horizontal;
gbc_separator_2.insets = neue 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);
Tabelle = new JTable ();
table.setModel (new DefaultTablemodel (neues Objekt [] [] {}, neuer String [] {
"Alter Dateiname", "neuer Dateiname"}));
scrollpane.setViewPortView (Tabelle);
}
/**
* Wie man mit dem Ereignis von Surfen mit Schaltflächen umgeht
*
* @param e
*/
Protected void do_button_actionperformed (actionEvent e) {
JFilechooser chooser = new JFilechoOser (); // Erstellen Sie einen Dateiauswahl
// Die Auswahl der Ordner nur festlegen
ChooSer.SetFileSelectionMode (jFilechoOser.directories_only);
int option = chooser.showopendialog (this); // Das Dialogfeld Offenes Öffnen anzeigen
if (option == JFILECHOOSER.Approve_Option) {
Dir = Chooser.getSelectedFile (); // Erhalten Sie den ausgewählten Ordner
} anders {
Dir = null;
}
fderfield.setText (Dir + ""); // Ordnerinformationen anzeigen
}
/**
* Start -Taste -Ereignishandhabungsmethode
*
* @param e
*/
Protected void do_StartButton_ActionPerformed (actionEvent e) {
String templet = templetfield.getText (); // Die Vorlagenzeichenfolge abrufen
if (templet.isempty ()) {
JOPTIONPANE.SHOWMESSAGEDIALOG (Dies, "Bitte bestätigen Sie Umbenennungsvorlage", "Informationsdialog",
JOPTIONPANE.WARNING_MESSAGE);
zurückkehren;
}
// Erhalten Sie das Tabellendatenmodell
DefaultTablemodel modell = (defaultTablemodel) table.getModel ();
model.setrowcount (0); // Tabellendaten löschen
int bi = (Integer) startspinner.getValue (); // Die Startnummer abrufen
int index = templet.indexof ("#"); // Holen Sie sich den Index des ersten "#"
String code = templet.substring (Index); // Holen Sie sich die Number -Platzhalterzeichenfolge in der Vorlage
// Ersetzen Sie die Number -Platzhalterzeichenfolge in der Vorlage durch das angegebene Format
templet = templet.replace (Code, "%0" + code.length () + "D");
String extname = extnamefield.getText (). TolowerCase ();
if (extname.indexof (".") == -1)
extname = "." + extname;
// Holen Sie sich das Dateilisten -Array in der Datei
File [] file = dir.listfiles (neue extnameFileFilter (extname));
für (Dateidatei: Dateien) {// Array von variablen Dateien
// jeden Dateinamen formatieren
String name = string.format (templet, bi ++)+extname;
// Fügen Sie die alten und neuen Namen der Datei zum Datenmodell der Tabelle hinzu
model.addrow (neuer String [] {file.getName (), name});
Datei parentfile = file.getParentFile (); // Erhalten Sie das Ordnerobjekt, in dem sich die Datei befindet
Datei newfile = new Datei (parentFile, Name);
Datei.Renameto (Newfile); // Datei umbenennen
}
}
}
Der Effekt wird im Bild gezeigt: