Como una unidad que almacena datos, los archivos generarán muchas categorías de acuerdo con el tipo de datos, que es el llamado tipo de archivo. Al operar archivos de datos, a menudo se requiere un procesamiento diferente según los diferentes tipos de archivos. Este ejemplo implementa los archivos de lectura del tipo de carpeta especificado y mostrándolos en controles de tabla. Esto juega un papel en atraer la clasificación de archivos en el desarrollo de proyectos.
Análisis de ideas:
Debido a que es una aplicación de formulario, primero busque la capa de vista. Se necesita un control de botón JButton para seleccionar una carpeta; Ingrese el tipo de archivo;
Para los controles de botones, vincule los métodos de procesamiento de eventos. . Luego ejecute el método showDialog (), luego use el método getSelectedFile () de la clase jfilechooser para obtener la ruta seleccionada, asignarla a una variable de tipo de archivo, use el método toString () para mostrar la ruta en la etiqueta y finalmente Obtenga la matriz de archivos filtrados que cumpla con las condiciones.
Para los controles de cuadros de texto, una vez que el texto interno cambia, el archivo en la ruta seleccionada debe ser refiltrado. archivos para condiciones.
Debido a que tanto el control del botón como el control del cuadro de texto deben implementar el filtrado y la pantalla, el filtrado y la pantalla se pueden usar como un método separado. ) Método de la clase de archivo Obtenga la matriz de archivos que cumpla con las condiciones, asigne el valor a una matriz de tipo de archivo y luego use el método getModel () de la clase jtable para obtener el modelo de datos de la tabla y use el setrow de la clase DefaultTableModel para obtener el modelo de datos. El método Count () primero borra la tabla, luego buce a través de la matriz de archivos usando foreach (), crea datos de fila de tabla usando la matriz de objeto [] en el bucle, llama al método getName () de la clase de archivo para obtener el nombre del archivo , y el método Long () para obtener el tamaño del archivo, el método LastModified () obtiene la fecha de modificación y finalmente usa el método addrow () de la clase DefaultTableModel para agregar datos de fila al modelo tabular.
El código es el siguiente:
La copia del código es la siguiente:
import java.awt.borderlayut;
import java.awt.eventqueue;
import java.awt.gridbagConstraints;
import java.awt.gridbagLayout;
importar java.awt.insets;
import java.awt.event.actionEvent;
import java.awt.event.actionListener;
import java.io.file;
import java.sql.date;
import javax.swing.jbutton;
import javax.swing.jfilechooser;
import javax.swing.jframe;
import javax.swing.jlabel;
import javax.swing.jpanel;
import javax.swing.jscrollpane;
import javax.swing.jtable;
import javax.swing.jTextfield;
import javax.swing.border.emptyborder;
import javax.swing.event.caretevent;
import javax.swing.event.caretListener;
import javax.swing.table.defaultTableModel;
Lista de clases públicas CustomTypeFile extiende Jframe {
/**
*
*/
Private static final Long SerialVersionUid = -6263975104443132420l;
/**
* Filtro de extensión personalizado
*
* @author li zhongwei
*/
Customfilter de clase final privada implementa java.io.fileFilter {
@Anular
Public boolean Acept (archivo PathName) {
// Obtener la extensión especificada establecida por el usuario
Cadena extname = extnameField.gettext ();
if (extname == null || extname.isempty ())
devolver falso;
if (! extname.startswith (".")) // Determinar el prefijo de extensión
extname = "."
extname = extName.tOlowerCase ();
// Determinar si la extensión y el nombre del archivo de filtro cumplen con los requisitos
if (pathName.getName (). tOlowerCase (). Endswith (ExtName))
devolver verdadero;
devolver falso;
}
}
JPANEL ContentPane privado;
privado jtextfield extnamefield;
mesa privada jtable;
Dir de archivo privado;
Etiqueta privada Jlabel;
/**
* Iniciar la aplicación.
*/
public static void main (string [] args) {
EventQueue.invokelater (new Runnable () {
public void run () {
intentar {
ListCustomTypeFile Frame = new ListCustomTypeFile ();
Frame.SetVisible (verdadero);
} Catch (Exception e) {
E.PrintStackTrace ();
}
}
});
}
/**
* Crea el marco.
*/
Public listCustomTypeFile () {
settitle ("Mostrar archivo del tipo especificado");
setDefaultCloseOperation (jframe.exit_on_close);
SetBounds (100, 100, 450, 300);
contentPane = new JPanel ();
ContentPane.setBorder (nuevo vacío (5, 5, 5, 5));
contentPane.setLayout (nuevo BorderLayout (0, 0));
setContentPane (contentPane);
Panel jpanel = new JPanel ();
contentpane.add (panel, 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, double.min_value};
panel.setLayout (gbl_panel);
JButton Button = new JButton ("Seleccionar carpeta");
Button.AdDactionListener (new ActionListener () {
public void Actionperformed (ActionEvent E) {
do_button_actionperformed (e);
}
});
GridbagConstraints gbc_button = new GridbagConstraints ();
gbc_button.anchor = GridbagConstraints.north;
gbc_button.gridx = 0;
gbc_button.gridy = 0;
panel.add (botón, gbc_button);
etiqueta = new JLabel ("carpeta");
GridbagConstraints gbc_label = new GridbagConstraints ();
gbc_label.fill = GridbagConstraints.horizontal;
gbc_label.gridx = 1;
gbc_label.gridy = 0;
panel.add (etiqueta, gbc_label);
JLabel Label_1 = new JLabel ("Ingrese el nombre de extensión del archivo especificado:");
GridbagConstraints gbc_label_1 = new GridbagConstraints ();
gbc_label_1.anchor = GridbagConstraints.east;
gbc_label_1.insets = nuevos inserciones (0, 0, 0, 5);
gbc_label_1.gridx = 0;
gbc_label_1.gridy = 1;
panel.add (etiqueta_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 = nuevos inserciones (0, 0, 5, 0);
gbc_extnamefield.fill = GridbagConstraints.horizontal;
gbc_extnamefield.gridx = 1;
gbc_extnamefield.gridy = 1;
panel.add (extnameField, gbc_extnamefield);
ExtNameField.SetColumns (10);
JscrollPane scrollPane = new JScrollPane ();
contentPane.Add (ScrollPane, BorderLayout.Center);
tabla = new JTable ();
table.setAutoreSizeMode (jtable.auto_resize_off);
table.setModel (new DefaultTableModel (nuevo objeto [] [] {}, nueva cadena [] {"nombre de archivo", "tamaño de archivo", "fecha de modificación"}) {
/**
*
*/
Private static final Long SerialVersionUid = 5274214559103654856l;
boolean [] columneditables = new Boolean [] {falso, falso, falso};
Public boolean IsCelEditable (int row, int columna) {
return columneditables [columna];
}
});
table.getColumnModel (). getColumn (0) .setPreferedWidth (220);
table.getColumnModel (). getColumn (1) .setPreferedWidth (85);
table.getColumnModel (). GetColumn (2) .SetPreferedWidth (110);
scrollPane.setViewPortView (tabla);
}
/**
* Seleccione el método de manejo de eventos del botón de carpeta
*
* @param e
*/
protegido void do_button_actionperformed (ActionEvent E) {
Jfilechooser chooser = new Jfilechooser (); // Cree un selector de archivos
// Establecer el filtro para el selector
Chooser.setFilesElectionMode (jfilechooser.Directorios_only);
chooser.showdialog (this, null);
dir = chooser.getSelectedFile ();
getLabel (). settext (dir.ToString ());
// Obtenga la matriz de archivos filtrados que cumpla con los criterios
listFiles ();
}
/**
* Mostrar archivos en la carpeta
*/
Private void listFiles () {
if (dir == null)
devolver;
// Obtenga la matriz de archivos que cumpla con los criterios
Archivo [] archivos = dir.listFiles (new CustomFilter ());
// Obtener el modelo de datos de la tabla
DefaultTableModel modelo = (defaultTableModel) table.getModel ();
Model.SetRowCount (0);
para (archivo de archivo: archivos) {// atraviesa la matriz de archivos
// Crear datos de fila de tabla
Objeto [] row = {file.getName (), file.length (),
nueva fecha (file.lastModified ())};
model.Addrow (fila); // Agregar datos de fila al modelo tabular
}
}
protegido void do_extnamefield_caretupdate (CareTevent E) {
listFiles ();
}
Jlabel protegido getLabel () {
etiqueta de retorno;
}
}
El efecto se muestra en la imagen: