Como uma unidade que armazena dados, os arquivos gerarão muitas categorias de acordo com o tipo de dados, que é o chamado tipo de arquivo. Ao operar arquivos de dados, geralmente é necessário um processamento diferente de acordo com diferentes tipos de arquivos. Este exemplo implementa os arquivos de leitura do tipo especificado de pasta e exibindo -os em controles de tabela. Isso desempenha um papel na atração da classificação de arquivos no desenvolvimento do projeto.
Análise de ideias:
Por ser um aplicativo de formulário, veja primeiro a camada de visualização. É necessário um JButton de controle de botão para selecionar uma pasta; Digite o tipo de arquivo;
Para controles de botão, vincule métodos de processamento de eventos a eles. . Obtenha a matriz de arquivo filtrada que atende às condições.
Para controles de caixa de texto, uma vez que o texto muda, o arquivo no caminho selecionado precisa ser refilterado. arquivos para condições.
Como o controle de botões e o controle da caixa de texto devem implementar a filtragem e a exibição, a filtragem e a exibição podem ser usadas como um método separado. ) Método da classe de arquivo Obtenha a matriz de arquivos que atende às condições, atribua o valor a uma matriz do tipo de arquivo e use o método getModel () da classe jtable para obter o modelo de dados da tabela e usar o setrow da classe DefaultTableModel para obter o modelo de dados. O método count () primeiro limpa a tabela e depois atravessa a matriz de arquivo usando foreach (), cria dados de linha da tabela usando a matriz do objeto [] no loop, chama o método getName () da classe de arquivo para obter o nome do arquivo e o método LIMPE () para obter o tamanho do arquivo, o método lastModified () obtém a data de modificação e, finalmente, use o método addRow () da classe DefaultTableModel para adicionar dados de linha ao modelo tabular.
O código é o seguinte:
A cópia do código é a seguinte:
importar java.awt.borderlayout;
importar java.awt.eventqueue;
importar java.awt.gridbagConstraints;
importar java.awt.gridbaglayout;
importar java.awt.insets;
importar java.awt.event.actionEvent;
importar java.awt.event.actionListener;
importar java.io.file;
importar java.sql.date;
importar javax.swing.jbutton;
importar javax.swing.jfileChooser;
importar javax.swing.jframe;
importar javax.swing.jlabel;
importar javax.swing.jpanel;
importar javax.swing.jscrollpane;
importar javax.swing.jtable;
importar javax.swing.jtextfield;
importar javax.swing.border.emptyborder;
importar javax.swing.event.caretevent;
importar javax.swing.event.caretlistener;
importar javax.swing.table.defaultTableModel;
classe pública listcustomtypefile estende JFrame {
/**
*
*/
private estático final serialversionUid = -6263975104443132420l;
/**
* Filtro de extensão personalizada
*
* @Author Li Zhongwei
*/
A classe final privada CustomFilter implementa java.io.filefilter {
@Override
public boolean Acep Acep (nome do arquivo) {
// Obtenha a extensão especificada definida pelo usuário
String extName = extNamefield.getText ();
if (extName == null || extName.isEmpty ())
retornar falso;
if (! extname.startswith (".")) // determinar o prefixo de extensão
extname = "."
extName = extName.tolowerCase ();
// determinar se o nome do arquivo de extensão e filtro atende aos requisitos
if (pathname.getName (). ToLowerCase (). ENDSWITH (EXTNAME))
retornar true;
retornar falso;
}
}
PRIVADO JPALEL CONTENTPANE;
Private JTextfield ExtNamefield;
Tabela Jtable Private;
Dir do arquivo privado;
Rótulo privado de Jlabel;
/**
* Inicie o aplicativo.
*/
public static void main (string [] args) {
EventQueue.invokelater (new Runnable () {
public void run () {
tentar {
ListCustomTyPefil Frame = new ListCustomTypefile ();
frame.setVisible (true);
} catch (Exceção e) {
E.PrintStackTrace ();
}
}
});
}
/**
* Crie o quadro.
*/
public listcustomTypefile () {
Settitle ("Mostrar arquivo do tipo especificado");
setDefaultCloseoperation (jframe.exit_on_close);
setbounds (100, 100, 450, 300);
contentPane = new jpanel ();
contentPane.setborder (New Emptyborder (5, 5, 5, 5));
contentPane.setLayout (new BorderLayout (0, 0));
setContentPane (contentPane);
Painel jpanel = new jpanel ();
contentPane.add (painel, borderlayout.north);
Gridbaglayout gbl_panel = new gridbaglayout ();
gbl_panel.columnwidths = new int [] {93, 54, 0};
gbl_panel.rowHeights = new int [] {23, 0, 0};
gbl_panel.columnweights = new Double [] {0.0, 1.0, Double.min_value};
gbl_panel.rowweights = new Double [] {0.0, 0.0, duplo.min_value};
painel.setLayout (gbl_panel);
Botão jbutton = novo jbutton ("Selecione a pasta");
button.addactionListener (new ActionListener () {
public void ActionPormed (ActionEvent E) {
do_button_actionPerformed (e);
}
});
GridBagConstraints gbc_button = new GridBagConstraints ();
gbc_button.anchor = gridbagconstraints.north;
gbc_button.gridx = 0;
gbc_button.gridy = 0;
painel.add (botão, gbc_button);
etiqueta = novo jlabel ("pasta");
GridBagConstraints gbc_label = new GridBagConstraints ();
gbc_label.fill = gridbagconstraints.horizontal;
gbc_label.gridx = 1;
gbc_label.gridy = 0;
painel.add (etiqueta, gbc_label);
JLABEL LABEL_1 = new Jlabel ("Digite o nome da extensão do arquivo especificado:");
GridbagConstraints gbc_label_1 = new GridBagConstraints ();
gbc_label_1.anchor = gridbagconstraints.east;
gbc_label_1.insets = novas inserções (0, 0, 0, 5);
gbc_label_1.gridx = 0;
gbc_label_1.gridy = 1;
painel.add (LABEL_1, GBC_LABEL_1);
extNamefield = new jtextfield ();
ExtNamefield.addcaretListener (New CaretListener () {
public void CareUpdate (Caretevent E) {
do_extnamefield_caretupdate (e);
}
});
extnamefield.settext (". gif");
GridbagConstraints gbc_extNamefield = new GridBagConstraints ();
gbc_extNamefield.insets = novas inserções (0, 0, 5, 0);
gbc_extnamefield.fill = gridbagconstraints.horizontal;
gbc_extNamefield.gridx = 1;
gbc_extNamefield.gridy = 1;
painel.add (extnamefield, gbc_extnamefield);
extNamefield.setColumns (10);
JscrollPane scrollPane = new JScrollPane ();
contentPane.add (scrollpane, borderlayout.center);
tabela = new jTable ();
tabela.SetAutoresizEMode (jtable.auto_resize_off);
tabela.setModel (new DefaultTableModel (new Object [] [] {}, new String [] {"Nome do arquivo", "Tamanho do arquivo", "Data de modificação"}) {
/**
*
*/
private estático final serialversionUid = 5274214559103654856L;
boolean [] coluneditables = new boolean [] {false, false, false};
public boolean iscelleditable (int linha, int coluna) {
retornar coluneditables [coluna];
}
});
tabela.getColumnModel (). getColumn (0) .SetPreferredWidth (220);
tabela.getColumnModel (). getColumn (1) .SetPreferredWidth (85);
tabela.getColumnModel (). getColumn (2) .SetPreferredWidth (110);
scrollpane.setViewPortView (tabela);
}
/**
* Selecione o método de manuseio de eventos do botão de pasta
*
* @param e
*/
Void protegido do_button_actionPerformed (ActionEvent e) {
JFILECHOOSER CHOOSER = new jfileChooser (); // Crie um seletor de arquivos
// defina o filtro para seletor
chooser.setFileSelectionMode (jfileChooser.directories_only);
chooser.showdialog (isto, nulo);
dir = chooser.getSelectedFile ();
getLabel (). setText (Dir.toString ());
// Obtenha a matriz de arquivo filtrada que atende aos critérios
listfiles ();
}
/**
* Mostrar arquivos na pasta
*/
private void listfiles () {
if (dir == null)
retornar;
// Obtenha a matriz de arquivos que atende aos critérios
Arquivo [] arquivos = dir.listfiles (new CustomFilter ());
// Obtenha o modelo de dados da tabela
DefaultTabLEModel Model = (DefaultTableModel) tabela.getModel ();
model.setRowCount (0);
para (arquivo de arquivo: arquivos) {// atravessa a matriz do arquivo
// Crie dados da linha da tabela
Objeto [] linha = {file.getName (), file.length (),
nova data (file.lastmodified ())};
Model.addrow (linha); // Adicione dados de linha ao modelo tabular
}
}
void protegido do_extnamefield_caretupdate (caretevent e) {
listfiles ();
}
Jlabel Getlabel () protegido protegido {
rótulo de retorno;
}
}
O efeito é mostrado na imagem: