يمكن لنظام تشغيل Windows تطبيق ملفات إعادة تسمية ، ولكن لا يمكن تنفيذ إعادة تسمية الدُفعات. ينفذ هذا المثال وظيفة إعادة تسمية الدُفعات ، ويمكنه دفع ملفات إعادة تسمية نفس النوع في مجلد وفقًا لقواعد معينة. يمكن للمستخدمين إعطاء قوالب إعادة تسمية ، ويمكن للبرامج إعادة تسمية الملفات المقابلة وفقًا للقوالب. بالإضافة إلى ذلك ، يمكنك إضافة رموز خاصة إلى قالب إعادة تسمية ، وسيحل البرنامج محل هذه الرموز الخاصة برقم الملف المعاد تسميته.
تحليل الأفكار:
1. انظر إلى طبقة العرض. ابدأ التكرار.
2. انظر إلى طبقة النموذج مرة أخرى. أولاً ، حدد طريقة معالجة الأحداث في زر التصفح ، قم بإنشاء محدد ملف JFileChooser في هذه الطريقة ، واستخدم طريقة setFilesElectionMode () لفئة JFileChooser لتعيين مجلدات تحديد فقط ، وعرض مربع الحوار المفتوح من خلال showopendialog () من فئة JFileChooser.
3. حدد فئة لتنفيذ واجهة FileFilter ، احفظ امتداد الملف في مُنشئ الفئة ، ثم تحديد طريقة ، يتم استخدام طريقة endswith () لفئة السلسلة لتصفية ملحق الملف.
4. ثم حدد طريقة معالجة الحدث في زر البدء أولاً. طريقة joptionpane ، ثم إنشاء كائن DefaultTablEmodel واستخدم فئة JTable. () طريقة فئة JSpinner للحصول على رقم البداية ، واستخدام طريقة الفهرس لفئة السلسلة للحصول على أول "#" فهرس فئة السلسلة Substring () يتم استخدامه للحصول على سلسلة العنصر النائب الرقم في القالب ، ويتم استخدام طريقة الاستبدال () لفئة السلسلة للحصول على سلسلة العنصر النائب في القالب. استبدل سلسلة العناصر النائبة في القالب بالتنسيق المحدد. ثم استخدم طريقة listfiles () فئة الملفات ، تحصل على صفيف قائمة الملفات في المجلد ، ويستخدم 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 {
/**
*
*/
استاتيكي خاص نهائي الطويل المسلسل = 4534371106024773867L ؛
ينفذ extNameFileFilter من الفئة النهائية الخاصة filefilter {
سلسلة خاصة
public extNameFileFilter (سلسلة extname) {
this.extName = extName ؛ // حفظ ملحق الملف
}
@تجاوز
قبول منطقي عام (اسم ملف) {
// مرشح ملحقات ملف
if (pathname.getName (). touppercase ()
.
العودة صحيح.
العودة كاذبة
}
}
jpanel contentPane الخاص ؛
خاص Jtextfield Forwardfield ؛
خاص Jtextfield Templetfield ؛
ملف خاص dir ؛
طاولة jtable الخاصة ؛
خاص JTextfield Extnamefield ؛
خاص jspinner startspinner ؛
/**
* إطلاق التطبيق.
*/
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
eventqueue.invokelater (New RunNable () {
تشغيل الفراغ العام () {
يحاول {
RENAMEFILES Frame = new RenameFiles () ؛
frame.setVisible (صحيح) ؛
} catch (استثناء e) {
E.PrintStackTrace () ؛
}
}
}) ؛
}
/**
* إنشاء الإطار.
*/
RENAMEFILES () {
setResible (false) ؛
Settitle ("File Batch Reneling") ؛
setDefaultCloseOperation (jframe.exit_on_close) ؛
setBounds (100 ، 100 ، 383 ، 409) ؛
contentPane = new JPanel () ؛
contentPane.setBorder (New FreexBorder (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 = مزدوج جديد [] {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 Label = New JLabel () ؛
label.settext ("وحدة إعادة تسمية الدُفعات:") ؛
GridBagConstraints gbc_label = new GridBagConstraints () ؛
gbc_label.fill = gridbagconstraints.Vertical ؛
gbc_label.insets = insets new (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 = new GridBagConstraints () ؛
gbc_label_1.anchor = gridbagconstraints.east ؛
gbc_label_1.fill = gridbagconstraints.Vertical ؛
gbc_label_1.insets = insets new (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 = insets new (0 ، 0 ، 5 ، 5) ؛
gbc_forderfield.gridwidth = 3 ؛
gbc_forderfield.gridx = 1 ؛
gbc_forderfield.gridy = 1 ؛
ContentPane.add (Forderfield ، gbc_forderfield) ؛
button jbutton = new jbutton () ؛
button.addActionListener (New ActionListener () {
الفراغ العام actionperformed (Actionevent e) {
do_button_ActionPerformed (e) ؛
}
}) ؛
button.settext ("Browse") ؛
GridBagConstraints gbc_button = جديد GridBagConstraints () ؛
gbc_button.anchor = gridbagconstraints.northwest ؛
gbc_button.insets = insets new (0 ، 0 ، 5 ، 0) ؛
gbc_button.gridx = 4 ؛
gbc_button.gridy = 1 ؛
contentPane.add (زر ، gbc_button) ؛
JseParator Seplator_1 = New JseParator () ؛
GridBagConstraints gbc_separator_1 = new GridBagConstraints () ؛
gbc_separator_1.fill = gridbagconstraints.both ؛
gbc_separator_1.insets = insets new (0 ، 0 ، 5 ، 0) ؛
gbc_separator_1.gridwidth = 5 ؛
gbc_separator_1.gridx = 0 ؛
gbc_separator_1.gridy = 2 ؛
contentPane.add (explator_1 ، gbc_separator_1) ؛
JLabel Label_5 = New JLabel () ؛
label_5.settext ("استخدم # لتحديد الموضع الذي يشغله عدد الأرقام ، واستخدم * لإدراج اسم الملف الأصلي:") ؛
GridBagConstraints gbc_label_5 = new GridBagConstraints () ؛
gbc_label_5.fill = gridbagconstraints.Vertical ؛
gbc_label_5.insets = insets new (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 = insets new (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 = insets new (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 = new GridBagConstraints () ؛
gbc_label_4.fill = gridbagconstraints.Vertical ؛
gbc_label_4.insets = insets new (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 = insets new (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 = new GridBagConstraints () ؛
gbc_label_2.fill = gridbagconstraints.horizontal ؛
gbc_label_2.insets = insets new (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 () {
الفراغ العام 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 = insets new (0 ، 0 ، 5 ، 5) ؛
gbc_extNameField.gridx = 3 ؛
gbc_extNameField.Gridy = 5 ؛
ContentPane.add (ExtNameField ، GBC_ExtNameField) ؛
StartButton.settext ("start") ؛
GridBagConstraints gbc_startbutton = جديد GridBagConstraints () ؛
gbc_startbutton.anchor = gridbagconstraints.north ؛
gbc_startbutton.insets = insets new (0 ، 0 ، 5 ، 0) ؛
gbc_startbutton.gridx = 4 ؛
gbc_startbutton.gridy = 5 ؛
ContentPane.add (StartButton ، GBC_StartButton) ؛
JSeparator Seplator_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 = insets new (0 ، 0 ، 5 ، 0) ؛
gbc_separator_2.gridwidth = 5 ؛
gbc_separator_2.gridx = 0 ؛
gbc_separator_2.gridy = 6 ؛
contentPane.add (explator_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) ؛
الجدول = جديد JTable () ؛
table.setModel (New DefaultTableModel (كائن جديد [] [] {} ، سلسلة جديدة [] {
"اسم الملف القديم" ، "اسم الملف الجديد"})) ؛
scrollpane.setViewPortView (الجدول) ؛
}
/**
* كيفية التعامل مع أحداث أزرار التصفح
*
* param e
*/
void do_button_actionperformed (ActionEvent e) {
JFileChooser chooser = New JfileChooser () ؛ // إنشاء محدد ملف
// تعيين اختيار المجلد فقط
chooser.setFilesElectionMode (jfilechooser.directories_only) ؛
int Option = 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 = (integer) 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 = "."
// احصل على صفيف قائمة الملفات في الملف
file [] files = dir.listfiles (new ExtNameFileFilter (extName)) ؛
لـ (ملف الملف: الملفات) {// صفيف الملفات المتغيرة
// تنسيق كل اسم ملف
اسم السلسلة = string.format (templet ، bi ++)+extName ؛
// أضف الأسماء القديمة والجديدة للملف إلى نموذج بيانات الجدول
model.addrow (سلسلة جديدة [] {file.getName () ، name}) ؛
ملف parentfile = file.getParentFile () ؛ // احصل على كائن المجلد حيث يوجد الملف
ملف newFile = ملف جديد (ParentFile ، name) ؛
file.renameto (newFile) ؛ // file rename
}
}
}
يظهر التأثير في الصورة: