ระบบปฏิบัติการ Windows สามารถใช้ไฟล์ Rename แต่ไม่สามารถใช้การเปลี่ยนชื่อแบทช์ได้ ตัวอย่างนี้ใช้ฟังก์ชั่นการเปลี่ยนชื่อแบทช์และสามารถเปลี่ยนชื่อไฟล์ประเภทเดียวกันในโฟลเดอร์ตามกฎบางอย่าง ผู้ใช้สามารถให้แม่แบบเปลี่ยนชื่อและโปรแกรมสามารถเปลี่ยนชื่อไฟล์ที่เกี่ยวข้องตามเทมเพลต นอกจากนี้คุณสามารถเพิ่มสัญลักษณ์พิเศษในเทมเพลตการเปลี่ยนชื่อและโปรแกรมจะแทนที่สัญลักษณ์พิเศษเหล่านี้ด้วยหมายเลขไฟล์ที่เปลี่ยนชื่อ
การวิเคราะห์ความคิด:
1. ดูที่เลเยอร์มุมมอง เริ่มต้นการทำซ้ำ
2. ดูเลเยอร์โมเดลอีกครั้ง ขั้นแรกให้กำหนดวิธีการจัดการเหตุการณ์ของปุ่มท่องเว็บสร้างตัวเลือกไฟล์ jfilechooser ในวิธีนี้ใช้เมธอด setFilesElectionMode () ของคลาส jfilechooser เพื่อตั้งค่าเลือกโฟลเดอร์เท่านั้นและแสดงกล่องโต้ตอบเปิดผ่าน Showopendialog () ของ คลาส JFilechooser
3. กำหนดคลาสเพื่อใช้งานอินเตอร์เฟส filefilter, บันทึกส่วนขยายไฟล์ในตัวสร้างของคลาสจากนั้นกำหนดวิธีการซึ่งวิธีการ Endswith () ของคลาสสตริงใช้เพื่อกรองนามสกุลไฟล์
4. จากนั้นกำหนดวิธีการจัดการเหตุการณ์ของปุ่มเริ่มต้น วิธีการของคลาส Joptionpane จากนั้นสร้างวัตถุ DefaultTableModel และใช้คลาส JTable () วิธีการของคลาส jspinner เพื่อรับหมายเลขเริ่มต้นและใช้วิธีการดัชนีของคลาสสตริงเพื่อรับ "#" แรกดัชนีของเมธอด substring คลาสสตริง () ใช้เพื่อรับสตริงตัวยึดหมายเลขในเทมเพลต และวิธีการแทนที่ () ของคลาสสตริงใช้เพื่อรับสตริงตัวยึดหมายเลขในเทมเพลต แทนที่สตริงตัวยึดหมายเลขในเทมเพลตด้วยรูปแบบที่ระบุ จากนั้นใช้เมธอดไฟล์คลาสไฟล์ () จะได้รับอาร์เรย์รายการไฟล์ในโฟลเดอร์ใช้ foreach () เพื่อวนซ้ำผ่านแต่ละไฟล์จัดรูปแบบชื่อไฟล์แต่ละชื่อผ่านวิธีการรูปแบบ () ของคลาสสตริงและใช้เมธอด addrow () ของคลาส DefaultTableModel เพื่อเปิดไฟล์เก่าเพิ่มชื่อและชื่อใหม่ลงในรูปแบบข้อมูลของตาราง ไปยังชื่อไฟล์ใหม่และในที่สุดก็ใช้เมธอด renameto () ของคลาสไฟล์ใช้การเปลี่ยนชื่อไฟล์
รหัสมีดังนี้:
การคัดลอกรหัสมีดังนี้:
นำเข้า java.awt.eventqueue;
นำเข้า java.awt.event.actionEvent;
นำเข้า java.awt.event.actionListener;
นำเข้า Java.io.File;
นำเข้า java.io.filefilter;
นำเข้า Javax.swing.jbutton;
นำเข้า Javax.swing.jfilechooser;
นำเข้า Javax.swing.jframe;
นำเข้า Javax.swing.jlabel;
นำเข้า Javax.swing.joptionpane;
นำเข้า Javax.swing.jpanel;
นำเข้า Javax.swing.jscrollpane;
นำเข้า Javax.swing.jseparator;
นำเข้า Javax.swing.jspinner;
นำเข้า Javax.swing.jtable;
นำเข้า Javax.swing.jtextfield;
นำเข้า Javax.swing.border.emptyborder;
นำเข้า Javax.swing.table.defaultTableModel;
นำเข้า Java.awt.GridBaglayout;
นำเข้า Java.awt.GridBagConstraints;
นำเข้า java.awt.insets;
-
* รับตัวกรองสำหรับรายการไฟล์
-
* @author Li Zhongwei
-
RenameFiles ชั้นเรียนสาธารณะขยาย JFrame {
-
-
-
ส่วนตัวคงที่สุดท้าย Long SerialVersionUID = 4534371106024773867L;
ExtNameFileFilter คลาสสุดท้ายส่วนตัวใช้ FileFilter {
string ส่วนตัว extname;
public extNameFileFilter (String extName) {
this.extName = extName; // บันทึกนามสกุลไฟล์
-
@Override
บูลีนสาธารณะยอมรับ (ชื่อพา ธ ไฟล์) {
// ส่วนขยายไฟล์ตัวกรอง
if (pathname.getName (). touppercase ()
.endswith (extname.touppercase ())))
กลับมาจริง;
กลับเท็จ;
-
-
Private JPanel ContentPane;
Private Jtextfield Forwardfield;
ส่วนตัว Jtextfield Templetfield;
ไฟล์ส่วนตัว Dir;
โต๊ะ jtable ส่วนตัว;
ส่วนตัว jtextfield extnamefield;
jspinner ส่วนตัว startspinner;
-
* เปิดแอปพลิเคชัน
-
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
Eventqueue.invokelater (ใหม่ runnable () {
โมฆะสาธารณะเรียกใช้ () {
พยายาม {
RenameFiles frame = new RenameFiles ();
frame.setVisible (จริง);
} catch (Exception e) {
E.PrintStackTrace ();
-
-
-
-
-
* สร้างเฟรม
-
Renamefiles สาธารณะ () {
setResizable (เท็จ);
settitle ("การเปลี่ยนชื่อแบทช์ไฟล์");
SetDefaultCloseoperation (jframe.exit_on_close);
Setbounds (100, 100, 383, 409);
ContentPane = new JPanel ();
ContentPane.SetBorder (ใหม่ Border (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 = ใหม่ int [] {25, 25, 10, 25, 24, 25, 2,
216, 0};
gbl_contentpane.columnweights = ใหม่สองเท่า [] {0.0, 0.0, 0.0, 0.0, 0.0
double.min_value};
GBL_CONTENTPANE.ROWWEIGHTS = ใหม่สองเท่า [] {0.0, 0.0, 0.0, 0.0, 0.0
0.0, 0.0, 0.0, double.min_value};
ContentPane.SetLayout (GBL_CONTENTPANE);
ฉลาก jlabel = new jlabel ();
label.settext ("โมดูลการเปลี่ยนชื่อแบตช์ไฟล์:");
gridbagConstraints gbc_label = new gridbagconstraints ();
gbc_label.fill = gridbagconstraints.vertical;
gbc_label.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 = ใหม่ gridbagconstraints ();
GBC_LABEL_1.ANCHOR = GRIDBAGCONTRAINTS.EAST;
gbc_label_1.fill = gridbagconstraints.vertical;
gbc_label_1.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 = ใหม่ gridBagConstraints ();
gbc_forderfield.fill = gridbagconstraints.horizontal;
gbc_forderfield.insets = สิ่งที่ใส่เข้าไปใหม่ (0, 0, 5, 5);
gbc_forderfield.gridwidth = 3;
gbc_forderfield.gridx = 1;
gbc_forderfield.gridy = 1;
ContentPane.add (Forderfield, GBC_Forderfield);
ปุ่ม jbutton = new JButton ();
button.addactionListener (ใหม่ actionListener () {
โมฆะสาธารณะ ActionPerformed (ActionEvent E) {
do_button_actionperformed (e);
-
-
button.settext ("เรียกดู");
gridbagConstraints gbc_button = new gridbagconstraints ();
gbc_button.anchor = gridbagconstraints.northwest;
gbc_button.insets = สิ่งใหม่ ๆ (0, 0, 5, 0);
gbc_button.gridx = 4;
gbc_button.gridy = 1;
ContentPane.add (ปุ่ม, GBC_Button);
jseparator separator_1 = new jseparator ();
gridbagConstraints gbc_separator_1 = ใหม่ gridbagconstraints ();
gbc_separator_1.fill = gridbagconstraints.both;
gbc_separator_1.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 = ใหม่ gridbagconstraints ();
GBC_LABEL_5.FILL = GRIDBAGCONTRAINTS.VERTICAL;
gbc_label_5.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 = ใหม่ gridbagconstraints ();
gbc_label_3.anchor = gridbagconstraints.east;
gbc_label_3.fill = gridbagconstraints.vertical;
gbc_label_3.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 = ใหม่ gridBagConstraints ();
gbc_templetfield.anchor = gridbagconstraints.south;
gbc_templetfield.fill = gridbagconstraints.horizontal;
GBC_TEMPLETFIELD.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 = ใหม่ gridbagconstraints ();
gbc_label_4.fill = gridbagconstraints.vertical;
gbc_label_4.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 = ใหม่ gridBagConstraints ();
gbc_startspinner.fill = gridbagconstraints.horizontal;
gbc_startspinner.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 = ใหม่ gridbagconstraints ();
gbc_label_2.fill = gridbagconstraints.horizontal;
gbc_label_2.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 (ใหม่ actionListener () {
โมฆะสาธารณะ 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 = สิ่งที่ใส่เข้าไปใหม่ (0, 0, 5, 5);
gbc_extnamefield.gridx = 3;
gbc_extnamefield.gridy = 5;
ContentPane.add (extNameField, GBC_EXTNAMEFIELD);
startbutton.settext ("เริ่ม");
gridbagConstraints gbc_startbutton = ใหม่ gridbagconstraints ();
gbc_startbutton.anchor = gridbagconstraints.north;
gbc_startbutton.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 = ใหม่ gridbagconstraints ();
gbc_separator_2.anchor = gridbagconstraints.north;
gbc_separator_2.fill = gridbagconstraints.horizontal;
gbc_separator_2.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 = ใหม่ 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 (ใหม่ defaultTableModel (วัตถุใหม่ [] [] {}, สตริงใหม่ [] {
"ชื่อไฟล์เก่า", "ชื่อไฟล์ใหม่"}));
Scrollpane.SetViewPortView (ตาราง);
-
-
* วิธีจัดการเหตุการณ์การเรียกดูปุ่ม
-
* @param e
-
Void DO_BUTTON_ACTIONPERFORMED (ActionEvent E) {
jfilechooser chooser = ใหม่ jfilechooser (); // สร้างตัวเลือกไฟล์
// ตั้งค่าการเลือกโฟลเดอร์เท่านั้น
chooser.setFilesElectionMode (jfilechooser.directories_only);
ตัวเลือก int = chooser.showopendialog (นี่); // แสดงกล่องโต้ตอบเปิด
ถ้า (ตัวเลือก == jfilechooser.approve_option) {
dir = chooser.getSelectedFile (); // รับโฟลเดอร์ที่เลือก
} อื่น {
dir = null;
-
forderfield.settext (dir + ""); // ข้อมูลโฟลเดอร์แสดงผล
-
-
* วิธีการจัดการเหตุการณ์เริ่มต้น
-
* @param e
-
void do_startbutton_actionperformed (ActionEvent E) {
String templet = templetfield.getText (); // รับสตริงเทมเพลต
if (templet.isempty ()) {
joptionpane.showMessageDialog (นี่ "โปรดยืนยันการเปลี่ยนชื่อแม่แบบ", "กล่องโต้ตอบข้อมูล"
joptionpane.warning_message);
กลับ;
-
// รับโมเดลข้อมูลตาราง
defaultTableModel model = (defaultTableModel) table.getModel ();
model.setRowCount (0); // ข้อมูลตารางล้าง
int bi = (จำนวนเต็ม) startSpinner.getValue (); // รับหมายเลขเริ่มต้น
INT INDEX = Templet.indexof ("#"); // รับดัชนีของ "#" แรก
รหัสสตริง = templet.substring (ดัชนี); // รับสตริงตัวยึดหมายเลขในเทมเพลต
// แทนที่สตริงตัวยึดหมายเลขในเทมเพลตด้วยรูปแบบที่ระบุ
templet = templet.replace (รหัส, "%0" + code.length () + "d");
string extName = extNameField.getText (). toLowerCase ();
if (extname.indexof (".") == -1)
extName = "."
// รับอาร์เรย์รายการไฟล์ในไฟล์
ไฟล์ [] files = dir.listfiles (ใหม่ extNameFileFilter (extName));
สำหรับ (ไฟล์ไฟล์: ไฟล์) {// อาร์เรย์ของไฟล์ตัวแปร
// จัดรูปแบบชื่อไฟล์แต่ละชื่อ
ชื่อสตริง = string.format (templet, bi ++)+extname;
// เพิ่มชื่อเก่าและใหม่ของไฟล์ลงในโมเดลข้อมูลของตาราง
model.addrow (สตริงใหม่ [] {file.getName (), ชื่อ});
ไฟล์ parentFile = file.getParentFile (); // รับวัตถุโฟลเดอร์ที่ไฟล์อยู่
ไฟล์ newfile = ไฟล์ใหม่ (parentfile, ชื่อ);
file.renameto (newfile); // การเปลี่ยนชื่อไฟล์
-
-
-
เอฟเฟกต์แสดงในภาพ: