Операционная система Windows может реализовать файлы переименования, но не может реализовать партии переименования. Этот пример реализует функцию переименования пакетов и может может быть переименованием файлов переименования того же типа в папке в соответствии с определенными правилами. Пользователи могут предоставлять шаблоны переименования, а программы могут переименовать соответствующие файлы в соответствии с шаблонами. Кроме того, вы можете добавить специальные символы в шаблон переименования, и программа заменит эти специальные символы на переименованный номер файла.
Анализ идеи:
1. Сначала посмотрите на уровень представления. Начало повторения.
2. Посмотрите на модельный слой снова. Во -первых, определите метод обработки событий кнопки кнопки просмотра, создайте селектор файлов jfilechooser в этом методе, используйте метод SetFileSelectionMode () класса Jfilechooser, чтобы установить только папки Select и отобразить открытое диалоговое окно через Showopendialog () Класс jfilechooser.
3. Определите класс для реализации интерфейса FileFilter, сохраните расширение файла в конструкторе класса, а затем определите метод, в котором метод Endswith () класса строки используется для фильтрации расширения файла.
4. Затем определите метод обработки событий кнопки «Пуск». Метод класса JoptionPane, а затем создайте объект DefaultTableModel и используйте класс jtable. () Метод класса Jspinner для получения начального номера и использования метода Indexof Class Class для получения первого «#». Индекс метода Class Class Substring () используется для получения номера строки заполнителя в шаблоне и метод замены () класса строки используется для получения номера строки заполнителя в шаблоне. Замените строку заполнителя в шаблоне указанного формата. Затем используйте метод ListFiles () File Class (). Класса 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 Extens Jframe {
/**
*
*/
Частный статический последний длинный серийный режим = 4534371106024773867L;
Частный окончательный класс ExtnameFileFilter реализует FileFilter {
частная строка extname;
public extnamefilefilter (string extname) {
this.extname = extname; // Сохранить расширение файла
}
@Override
Public Boolean Accept (PAILE PATHNAME) {
// расширения файлов фильтрации
if (pathname.getName (). ToupperCase ()
.endswith (extname.touppercase ()))
вернуть истину;
вернуть ложь;
}
}
Частный JPanel ContentPane;
Частный JTextfield Forwardfield;
Частный JTextfield Templetfield;
частный файл dir;
частный таблица JTable;
Private Jtextfield Extnamefield;
Частный Jspinner Startspinner;
/**
* Запустите приложение.
*/
public static void main (string [] args) {
EventQueue.invokelater (new Runnable () {
public void run () {
пытаться {
RENAMEFILES FRAME = new RENAMEFILES ();
Frame.SetVisible (true);
} catch (Exception e) {
e.printstacktrace ();
}
}
});
}
/**
* Создать кадр.
*/
public renamefiles () {
setReSizable (false);
Cettitle ("Партия файла переименования");
setDefaultCloseoPeration (jframe.exit_on_close);
Setbounds (100, 100, 383, 409);
ContentPane = new jPanel ();
ContentPane.Setborder (новый пустойбордер (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.columneweights = new Double [] {0,0, 0,0, 0,0, 0,0, 0,0,
Double.min_value};
gbl_contentpane.rowweights = new 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 ("rename module file partice:");
GridbagConstraints gbc_label = new GridbagConstraints ();
gbc_label.fill = gridbagcontraints.vertical;
gbc_label.insets = новые вставки (0, 0, 5, 5);
gbc_label.gridwidth = 3;
gbc_label.gridx = 1;
gbc_label.gridy = 0;
contentpane.add (метка, gbc_label);
Jlabel label_1 = new jlabel ();
label_1.settext ("pail path:");
GridbagConstraints gbc_label_1 = new GridbagConstraints ();
gbc_label_1.anchor = gridbagconstraints.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 = new 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 button = new jbutton ();
button.addactionListener (new ActionListener () {
public void 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 seperator_1 = new jseparator ();
GridbagConstraints gbc_separator_1 = new 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 (seperator_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 = новые вставки (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 = новые вставки (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 = новые вставки (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 ("Starts:");
GridbagConstraints gbc_label_4 = new 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 = new 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 ("endension:");
GridbagConstraints GBC_LABEL_2 = new 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 (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 = новые вставки (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 = новые вставки (0, 0, 5, 0);
gbc_startbutton.gridx = 4;
gbc_startbutton.gridy = 5;
contentpane.add (startbutton, gbc_startbutton);
Jseparator seperator_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 = новые вставки (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);
Таблица = новый jtable ();
table.setmodel (new DefaultTableModel (new Object [] [] {}, New String [] {
«Старое имя файла», «новое имя файла»}));
scrollpane.setViewPortView (таблица);
}
/**
* Как справиться с кнопками просмотра
*
* @param e
*/
защищенная void do_button_actionperformed (actionevent e) {
Jfilechooser chooser = new jfilechooser (); // Создать селектор файлов
// Установить только выбор папки
chooser.setFileSelectionMode (jfilechooser.directories_only);
int option = chooser.showopendialog (this); // Показать диалоговое окно Open Open
if (option == 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 ("#"); // Получить индекс первого "#"
String Code = templet.substring (index); // Получите номера строки заполнителя в шаблоне
// заменить номера строки заполнителя в шаблоне указанным форматом
templet = templet.replace (код, "%0" + code.length () + "d");
String extname = extnamefield.getText (). ToLowerCase ();
if (extname.indexof (".") == -1)
extname = "." + extname;
// Получить массив списков файлов в файле
File [] files = dir.listfiles (new extnamefilefilter (extname));
для (файл файла: файлы) {// массив файлов переменных
// Форматируйте каждое имя файла
String name = string.format (templet, bi ++)+extname;
// Добавить старые и новые имена файла в модель данных таблицы
model.addrow (new String [] {file.getName (), name});
File parentfile = file.getParentFile (); // Получить объект папки, где находится файл
File newfile = new File (parentfile, name);
file.renameto (newfile); // переименование файла
}
}
}
Эффект показан на картинке: