O sistema operacional do Windows pode implementar arquivos renomeados, mas não pode implementar a renomeação do lote. Este exemplo implementa a função de renomeação de lote e pode renomear em lote arquivos do mesmo tipo em uma pasta de acordo com certas regras. Os usuários podem fornecer modelos de renomeação e os programas podem renomear arquivos correspondentes de acordo com os modelos. Além disso, você pode adicionar símbolos especiais ao modelo de renomeação e o programa substituirá esses símbolos especiais pelo número de arquivo renomeado.
Análise de ideias:
1. Primeiro, veja a camada de visualização. Iniciar a repetição.
2. Olhe para a camada do modelo novamente. Primeiro, defina o método de manuseio de eventos do botão de navegação, crie um seletor de arquivos jfileChooser neste método, use o método setFileSelectionMode () da classe jfileChooser para definir apenas pastas selecionar e exibir a caixa de diálogo aberta através do showOPENDIALOG () do JFILECHOOSER Classe.
3. Defina uma classe para implementar a interface FileFilter, salve a extensão do arquivo no construtor da classe e, em seguida, defina um método no qual o método ENDSWITH () da classe String é usado para filtrar a extensão do arquivo.
4. Em seguida, defina o método de manuseio de eventos do botão Iniciar. Método da classe JoptionPane e, em seguida, crie um objeto DefaultTableModel e use a classe JTable. () Método da classe jspinner para obter o número inicial e usar o método indexOf da classe String para obter o primeiro "#" o índice do método da classe String substring () é usado para obter a sequência de espaço reservado número do modelo no modelo e o método Substacement () da classe String é usado para obter a sequência de espaço reservado numérico no modelo. Substitua a sequência de espaço reservado numérico no modelo com o formato especificado. Em seguida, use o método da classe de arquivo listfiles () obtém a matriz da lista de arquivos na pasta, usa o foreach () para fazer um loop através de cada arquivo, formate cada nome de arquivo através do método format () da classe string e usa o método addRow () da classe DefaultTableModel para girar o arquivo antigo, adicione o nome e o novo nome ao modelo de dados da tabela. para um novo nome de arquivo e, finalmente, use o método renameto () da classe de arquivo implementar renomeação de arquivos.
O código é o seguinte:
A cópia do código é a seguinte:
importar java.awt.eventqueue;
importar java.awt.event.actionEvent;
importar java.awt.event.actionListener;
importar java.io.file;
importar java.io.filefilter;
importar javax.swing.jbutton;
importar javax.swing.jfileChooser;
importar javax.swing.jframe;
importar javax.swing.jlabel;
importar javax.swing.JOptionPane;
importar javax.swing.jpanel;
importar javax.swing.jscrollpane;
importar javax.swing.jseparator;
importar javax.swing.jspinner;
importar javax.swing.jtable;
importar javax.swing.jtextfield;
importar javax.swing.border.emptyborder;
importar javax.swing.table.defaultTableModel;
importar java.awt.gridbaglayout;
importar java.awt.gridbagConstraints;
importar java.awt.insets;
/**
* Obtenha o filtro para a lista de arquivos
*
* @Author Li Zhongwei
*/
classe pública Renamefiles estende JFrame {
/**
*
*/
private estático final serialversionUid = 4534371106024773867l;
classe final privada extNameFileFilter implementa o FileFilter {
string private extname;
public extNameFileFilter (String extName) {
this.extName = extName; // Salvar extensão de arquivo
}
@Override
public boolean Acep Acep (nome do arquivo) {
// Extensões de arquivo de filtro
if (pathname.getName (). toupppercase ()
.ndSwith (extName.TOUPPERCASE ()))
retornar true;
retornar falso;
}
}
PRIVADO JPALEL CONTENTPANE;
Private JTextfield Forwardfield;
Private Jtextfield Templetfield;
Dir do arquivo privado;
Tabela Jtable Private;
Private JTextfield ExtNamefield;
JSPinner privado StartSpinner;
/**
* Inicie o aplicativo.
*/
public static void main (string [] args) {
EventQueue.invokelater (new Runnable () {
public void run () {
tentar {
Renomearfiles frame = new renamefiles ();
frame.setVisible (true);
} catch (Exceção e) {
E.PrintStackTrace ();
}
}
});
}
/**
* Crie o quadro.
*/
public renamefiles () {
setResizable (false);
Settitle ("renomeação de lote de arquivo");
setDefaultCloseoperation (jframe.exit_on_close);
setbounds (100, 100, 383, 409);
contentPane = new jpanel ();
contentPane.setborder (New Emptyborder (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, 2,
216, 0};
gbl_contentpane.columnweights = novo duplo [] {0,0, 0,0, 0,0, 0,0, 0,0,
Duplo.min_value};
gbl_contentpane.rowweights = novo duplo [] {0,0, 0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, duplo.min_value};
contentPane.setLayout (gbl_contentPane);
Rótulo jlabel = new jlabel ();
LABEL.SETTEXT ("Módulo de renomeação em lote de arquivo:");
GridBagConstraints gbc_label = new GridBagConstraints ();
gbc_label.fill = gridbagconstraints.vertical;
gbc_label.insets = novas inserções (0, 0, 5, 5);
gbc_label.GridWidth = 3;
gbc_label.gridx = 1;
gbc_label.gridy = 0;
contentPane.add (etiqueta, gbc_label);
JLABEL LABEL_1 = new Jlabel ();
Label_1.settext ("Caminho do arquivo:");
GridbagConstraints gbc_label_1 = new GridBagConstraints ();
gbc_label_1.anchor = gridbagconstraints.east;
gbc_label_1.fill = gridbagconstraints.vertical;
gbc_label_1.insets = novas inserções (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 = novas inserções (0, 0, 5, 5);
gbc_forderfield.GridWidth = 3;
gbc_forderfield.gridx = 1;
gbc_forderfield.gridy = 1;
contentPane.add (Forderfield, GBC_Forderfield);
Botão jbutton = new jbutton ();
button.addactionListener (new ActionListener () {
public void ActionPormed (ActionEvent E) {
do_button_actionPerformed (e);
}
});
Button.Settext ("Browse");
GridBagConstraints gbc_button = new GridBagConstraints ();
gbc_button.anchor = gridbagconstraints.northwest;
gbc_button.insets = novas inserções (0, 0, 5, 0);
gbc_button.gridx = 4;
gbc_button.gridy = 1;
contentPane.add (Button, GBC_Button);
JSEPARATOR separador_1 = new Jseparator ();
GridbagConstraints gbc_separator_1 = new GridBagConstraints ();
gbc_separator_1.fill = gridbagconstraints.both;
gbc_separator_1.insets = novas inserções (0, 0, 5, 0);
gbc_separator_1.gridwidth = 5;
gbc_separator_1.gridx = 0;
gbc_separator_1.gridy = 2;
contentPane.add (separador_1, gbc_separator_1);
JLABEL LABEL_5 = new Jlabel ();
LABEL_5.SETTEXT ("Use # para especificar a posição ocupada pela contagem de números e use * para inserir o nome do arquivo original:");
GridbagConstraints gbc_label_5 = new GridBagConstraints ();
gbc_label_5.fill = gridbagconstraints.vertical;
gbc_label_5.insets = novas inserções (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 ("Modelo:");
GridbagConstraints gbc_label_3 = new GridBagConstraints ();
gbc_label_3.anchor = gridbagconstraints.east;
gbc_label_3.fill = gridbagconstraints.vertical;
gbc_label_3.insets = novas inserções (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 = novas inserções (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 ("inicia:");
GridbagConstraints gbc_label_4 = new GridBagConstraints ();
gbc_label_4.fill = gridbagconstraints.vertical;
gbc_label_4.insets = novas inserções (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 = novas inserções (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 ("Extensão:");
GridbagConstraints gbc_label_2 = new GridBagConstraints ();
gbc_label_2.fill = gridbagconstraints.horizontal;
gbc_label_2.insets = novas inserções (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 ActionPormed (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 = novas inserções (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 = novas inserções (0, 0, 5, 0);
gbc_startbutton.gridx = 4;
gbc_startbutton.gridy = 5;
contentPane.add (StartButton, GBC_StartButton);
JSEPARATOR separador_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 = novas inserções (0, 0, 5, 0);
gbc_separator_2.GridWidth = 5;
gbc_separator_2.gridx = 0;
gbc_separator_2.gridy = 6;
contentPane.add (separador_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);
tabela = new jTable ();
tabela.setModel (new DefaultTableModel (novo objeto [] [] {}, new String [] {
"Nome do arquivo antigo", "novo nome do arquivo"}));
scrollpane.setViewPortView (tabela);
}
/**
* Como lidar com o evento de botões de navegação
*
* @param e
*/
Void protegido do_button_actionPerformed (ActionEvent e) {
JFILECHOOSER CHOOSER = new jfileChooser (); // Crie um seletor de arquivos
// Defina apenas seleção de pastas
chooser.setFileSelectionMode (jfileChooser.directories_only);
int option = chooser.showpendialog (this); // Mostrar caixa de diálogo aberta
if (option == jfileChooser.Approve_Option) {
dir = chooser.getSelectedFile (); // Obtenha a pasta selecionada
} outro {
dir = null;
}
forderfield.settext (dir + ""); // Informações da pasta de exibição
}
/**
* Iniciar o método de manuseio de eventos do botão
*
* @param e
*/
Void protegido do_startbutton_actionPerformed (ActionEvent e) {
String templet = templetfield.getText (); // Obtenha a string de modelo
if (templet.isempty ()) {
JoptionPane.ShowMessAgedialog (isto, "Confirme o modelo de renomeação", "Caixa de diálogo de informações",
JoptionPane.warning_message);
retornar;
}
// Obtenha o modelo de dados da tabela
DefaultTabLEModel Model = (DefaultTableModel) tabela.getModel ();
model.setRowCount (0); // Dados da tabela limpa
int bi = (inteiro) startSpinner.getValue (); // Obtenha o número de início
int index = templet.indexof ("#"); // Obtenha o índice do primeiro "#"
Código da String = Templet.substring (índice); // Obtenha a sequência de espaço reservado numérico no modelo
// Substitua a sequência de espaço reservado numérico no modelo pelo formato especificado
Templet = Templet.Replace (código, "%0" + code.Length () + "D");
String extName = extNamefield.getText (). ToLowerCase ();
if (extName.indexof (".") == -1)
extname = "." + extname;
// Obtenha a matriz da lista de arquivos no arquivo
Arquivo [] arquivos = dir.listfiles (new extNameFileFilter (extName));
para (arquivo de arquivo: arquivos) {// matriz de arquivos variáveis
// formate cada nome de arquivo
Nome da string = String.Format (Templet, Bi ++)+EXTNAME;
// Adicione os nomes antigos e novos do arquivo ao modelo de dados da tabela
model.addrow (new string [] {file.getName (), nome});
Arquivo parentfile = file.getparentfile (); // Obtenha o objeto de pasta onde o arquivo está localizado
Arquivo newFile = novo arquivo (pai ParentFile, nome);
file.renameto (newfile); // renomeio de arquivo
}
}
}
O efeito é mostrado na imagem: