Sistem Operasi Windows dapat mengimplementasikan file ganti nama, tetapi tidak dapat menerapkan penggantian nama batch. Contoh ini mengimplementasikan fungsi penggantian nama batch, dan dapat mengganti nama file dari jenis yang sama dalam folder sesuai dengan aturan tertentu. Pengguna dapat memberikan ganti nama templat, dan program dapat mengganti nama file yang sesuai sesuai dengan templat. Selain itu, Anda dapat menambahkan simbol khusus ke ganti nama templat, dan program akan menggantikan simbol khusus ini dengan nomor file yang diganti namanya.
Analisis Ide:
1. Pertama -tama melihat lapisan tampilan. Mulai pengulangan.
2. Lihatlah lapisan model lagi. Pertama, tentukan metode penanganan acara dari tombol penelusuran, buat pemilih file jfilechooser dalam metode ini, gunakan metode setFileSelectionMode () dari kelas JFileChooser untuk mengatur hanya folder, dan menampilkan kotak dialog terbuka melalui showopendialog () dari The The the the the The Only the the Only Kelas JFilechooser.
3. Tentukan kelas untuk mengimplementasikan antarmuka filefilter, simpan ekstensi file di konstruktor kelas, dan kemudian tentukan metode, di mana metode endswith () dari kelas string digunakan untuk memfilter ekstensi file.
4. Tentukan metode penanganan acara dari tombol start. Metode kelas JOPTIONPANE, dan kemudian buat objek DefaultTableModel dan gunakan kelas JTable. () Metode kelas JSpinner untuk mendapatkan nomor awal, dan menggunakan metode indeks dari kelas string untuk mendapatkan yang pertama "#" indeks dari metode string class substring () digunakan untuk mendapatkan string placeholder angka dalam templat , dan metode penggantian () dari kelas string digunakan untuk mendapatkan string placeholder angka dalam templat. Ganti angka string placeholder dalam templat dengan format yang ditentukan. Kemudian gunakan metode File Class ListFiles () mendapatkan array daftar file di folder, menggunakan foreach () untuk mengulangi setiap file, memformat setiap nama file melalui metode format () dari kelas string, dan menggunakan metode addRow () dari kelas DefaultTableModel untuk memutar file lama menambahkan nama dan nama baru ke model data tabel. ke nama file baru, dan akhirnya gunakan metode RenAMeTo () dari kelas file mengimplementasikan penggantian nama file.
Kodenya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
impor java.awt.eventqueue;
impor java.awt.event.actionevent;
impor java.awt.event.actionlistener;
impor java.io.file;
impor java.io.filefilter;
impor javax.swing.jbutton;
impor javax.swing.jfilechooser;
impor javax.swing.jframe;
impor javax.swing.jlabel;
impor javax.swing.joptionpane;
impor javax.swing.jpanel;
impor javax.swing.jscrollpane;
impor javax.swing.jseparator;
impor javax.swing.jspinner;
impor javax.swing.jtable;
impor javax.swing.jtextfield;
impor javax.swing.border.emptyborder;
impor javax.swing.table.defaulttableModel;
impor java.awt.gridbaglayout;
impor java.awt.gridbagconstraints;
impor java.awt.insets;
/**
* Dapatkan filter untuk daftar file
*
* @author li zhongwei
*/
RenameFiles kelas publik memperluas jframe {
/**
*
*/
SerialVersionUID panjang statis private = 4534371106024773867L;
kelas akhir pribadi ExtNeFilefilter mengimplementasikan filefilter {
Private String ExtName;
Public ExtNeFileFilter (String ExtName) {
this.extName = extName; // Simpan ekstensi file
}
@Mengesampingkan
public boolean accept (file pathname) {
// filter ekstensi file
if (pathname.getName (). Touppercase ()
.endswith (extname.touppercase ()))
Kembali Benar;
mengembalikan false;
}
}
ContentPane Jpanel Pribadi;
Private JTextfield Forwardfield;
Private JTextfield Templetfield;
dirut file pribadi;
tabel jtable pribadi;
Private JTextfield ExtNeField;
Private JSpinner StartSpinner;
/**
* Luncurkan aplikasi.
*/
public static void main (string [] args) {
Eventqueue.invokelater (runnable baru () {
public void run () {
mencoba {
Bingkai renamefiles = renameFiles baru ();
frame.setVisible (true);
} catch (Exception e) {
e.printstacktrace ();
}
}
});
}
/**
* Buat bingkai.
*/
renameFiles publik () {
setResizable (false);
settitle ("File Batch Renaming");
setDefaultCloseOperation (jframe.exit_on_close);
setbounds (100, 100, 383, 409);
ContentPane = jpanel baru ();
contentpane.setborder (baru kosong (5, 5, 5, 5));
setContentPane (ContentPane);
Gridbaglayout gbl_contentpane = new gridbaglayout ();
gbl_contentpane.columnwidths = int new [] {72, 54, 60, 87, 91, 0};
gbl_contentpane.rowHeights = int new [] {25, 25, 10, 25, 24, 25, 2,
216, 0};
gbl_contentpane.columnweights = double baru [] {0,0, 0,0, 0,0, 0,0, 0,0,
Double.min_value};
gbl_contentpane.rowweights = double baru [] {0,0, 0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, double.min_value};
contentpane.setLayout (gbl_contentpane);
Label jlabel = new jlabel ();
label.setText ("Modul Rename Batch File:");
Gridbagconstraints gbc_label = new gridbagconstraints ();
gbc_label.fill = gridbagconstraints.vertikal;
gbc_label.insets = inset baru (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 ("Path file:");
Gridbagconstraints gbc_label_1 = gridbagconstraints baru ();
gbc_label_1.anchor = gridbagconstraints.east;
gbc_label_1.fill = gridbagconstraints.vertikal;
gbc_label_1.insets = insets baru (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 = inset baru (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 (ActionListener baru () {
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 = inset baru (0, 0, 5, 0);
gbc_button.gridx = 4;
gbc_button.gridy = 1;
ContentPane.Add (tombol, GBC_BUTTON);
Jseparator separator_1 = jseparator baru ();
Gridbagconstraints gbc_separator_1 = gridbagconstraints baru ();
gbc_separator_1.fill = gridbagconstraints.both;
gbc_separator_1.insets = inset baru (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 ("Gunakan # untuk menentukan posisi yang ditempati oleh jumlah nomor, dan gunakan * untuk memasukkan nama file asli:");
Gridbagconstraints gbc_label_5 = gridbagconstraints baru ();
gbc_label_5.fill = gridbagconstraints.vertikal;
gbc_label_5.insets = inset baru (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 = gridbagconstraints baru ();
gbc_label_3.anchor = gridbagconstraints.east;
gbc_label_3.fill = gridbagconstraints.vertikal;
gbc_label_3.insets = inset baru (0, 0, 5, 5);
gbc_label_3.gridx = 0;
gbc_label_3.gridy = 4;
contentpane.add (label_3, gbc_label_3);
Templetfield = JTextField baru ();
Templetfield.setText ("Catrestaurant ###");
Gridbagconstraints gbc_templetfield = new gridbagconstraints ();
gbc_templeTfield.anchor = gridbagconstraints.south;
gbc_templetfield.fill = gridbagconstraints.horizontal;
gbc_templetfield.insets = insets baru (0, 0, 5, 5);
gbc_templetfield.gridwidth = 3;
gbc_templetfield.gridx = 1;
gbc_templetfield.gridy = 4;
ContentPane.Add (Templetfield, GBC_Templetfield);
Jlabel label_4 = jlabel baru ();
label_4.setText ("Mulai:");
Gridbagconstraints gbc_label_4 = gridbagconstraints baru ();
gbc_label_4.fill = gridbagconstraints.vertikal;
gbc_label_4.insets = inset baru (0, 0, 5, 5);
gbc_label_4.gridx = 0;
gbc_label_4.gridy = 5;
contentpane.add (label_4, gbc_label_4);
startSpinner = jspinner baru ();
Gridbagconstraints gbc_startspinner = gridbagconstraints baru ();
gbc_startspinner.fill = gridbagconstraints.horizontal;
gbc_startspinner.insets = inset baru (0, 0, 5, 5);
gbc_startspinner.gridx = 1;
gbc_startspinner.gridy = 5;
contentpane.add (startSpinner, gbc_startspinner);
Jlabel label_2 = jlabel baru ();
label_2.setText ("Extension:");
Gridbagconstraints gbc_label_2 = gridbagconstraints baru ();
gbc_label_2.fill = gridbagconstraints.horizontal;
gbc_label_2.insets = inset baru (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 (ActionListener baru () {
public void actionPerformed (actionEvent e) {
do_startbutton_actionperformed (e);
}
});
ExtNeField = new jTextField ();
ExtNeField.setText ("jpg");
Gridbagconstraints gbc_extNamefield = new gridbagconstraints ();
gbc_extnamefield.fill = gridbagconstraints.horizontal;
gbc_extNamefield.insets = insets baru (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 = inset baru (0, 0, 5, 0);
gbc_startbutton.gridx = 4;
gbc_startbutton.gridy = 5;
contentpane.add (startbutton, gbc_startbutton);
Jseparator separator_2 = jseparator baru ();
Gridbagconstraints gbc_separator_2 = gridbagconstraints baru ();
gbc_separator_2.anchor = gridbagconstraints.north;
gbc_separator_2.fill = gridbagconstraints.horizontal;
gbc_separator_2.insets = inset baru (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 = jscrollpane baru ();
Gridbagconstraints gbc_scrollpane = new gridbagconstraints ();
gbc_scrollpane.fill = gridbagconstraints.koth;
gbc_scrollpane.gridwidth = 5;
gbc_scrollpane.gridx = 0;
gbc_scrollpane.gridy = 7;
contentpane.add (scrollpane, gbc_scrollpane);
tabel = jtable baru ();
Table.SetModel (DefaultTableModel baru (objek baru [] [] {}, string baru [] {
"Nama File Lama", "Nama File Baru"}));
scrollpane.setViewPortView (tabel);
}
/**
* Cara menangani peristiwa tombol penelusuran
*
* @param e
*/
void do_button_actionperformed (actionEvent e) {{ActionEvent E) {
JFilechooser chooser = jFileChooser (); // Buat pemilih file file
// atur saja pilihan folder
chooser.setFilesElectionMode (jfilechooser.directories_only);
Int option = chooser.showopendialog (this); // tunjukkan kotak dialog terbuka
if (option == jFilechooser.approve_option) {
dir = chooser.getSelectectedFile (); // Dapatkan folder yang dipilih
} kalau tidak {
dir = null;
}
FORDERFIELD.SETTEXT (DIR + ""); // Tampilkan informasi folder
}
/**
* Metode Penanganan Acara Tombol Mulai
*
* @param e
*/
void do_startbutton_actionperformed (actionEvent e) {{{{E) {
String Templet = Templetfield.getText (); // Dapatkan string template
if (templet.isempty ()) {
JOPTIONPANE.SHOWMESSADEIALOG (ini, "Harap konfirmasi ganti nama template", "dialog informasi",
Joptionpane.warning_message);
kembali;
}
// Dapatkan model data tabel
DefaultTableModel model = (defaultTableModel) Table.getModel ();
Model.SetrowCount (0); // Clear Table Data
int bi = (integer) startspinner.getValue (); // Dapatkan nomor mulai
int index = Templet.indexof ("#"); // Dapatkan indeks "#" pertama
Kode String = Templet.SubString (index); // Dapatkan Number Placeholder String di template
// ganti angka string placeholder dalam templat dengan format yang ditentukan
templet = templet.replace (kode, "%0" + code.length () + "d");
String extName = extNeTefield.getText (). TolowerCase ();
if (extname.indexof (".") == -1)
extname = "." + Extname;
// Dapatkan array daftar file di file
File [] file = dir.listfiles (extNeFileFilter baru (extName));
untuk (file file: file) {// array file variabel
// Format setiap nama file
String name = string.Format (templet, bi ++)+extname;
// Tambahkan nama lama dan baru file ke model data tabel
model.addrow (string baru [] {file.getName (), name});
File parentFile = file.getParentFile (); // Dapatkan objek folder tempat file berada
File newfile = file baru (parentFile, name);
file.renameto (newfile); // File ganti nama
}
}
}
Efeknya ditunjukkan pada gambar: