Als Einheit, das Daten speichert, generieren Dateien viele Kategorien entsprechend dem Datentyp, dem sogenannten Dateityp. Beim Betrieb von Datendateien ist häufig eine unterschiedliche Verarbeitung gemäß verschiedenen Dateitypen erforderlich. Dieses Beispiel implementiert das Lesen von Dateien des angegebenen Ordnertyps und das Anzeigen in Tabellensteuerungen. Dies spielt eine Rolle bei der Anziehung der Klassifizierung von Dateien in der Projektentwicklung.
Ideenanalyse:
Da es sich um eine Formularanwendung handelt, schauen Sie sich zunächst die Ansichtsschicht an. Eine Schaltfläche "Schaltfläche" wird für die Auswahl eines Ordners ausgewählt. Geben Sie den Dateityp ein.
Binden Sie für Schaltflächensteuerungen in dieser Methode Ereignisverarbeitungsmethoden an. . Führen Sie dann die Methode "showDialog () aus und verwenden Sie die Methode GetSelectedFile () der JFilechooser -Klasse, um den ausgewählten Pfad zu erhalten, zu einer Dateitypvariablen, verwenden Holen Sie sich das gefilterte Dateiarray, das den Bedingungen erfüllt.
Für Textfeldsteuerungen muss die Datei im ausgewählten Pfad nach dem neuesten Stand der Ereignisse an die Methode der JTextField -Klasse addCaretListener () gebunden, und die gefilterte Konformität wird in diesem Methodenarray von der JTEXTField -Klasse gebunden. Dateien für Bedingungen.
Da sowohl die Schaltfläche als auch das Textfeldsteuerung Filterung und Anzeige implementieren müssen, können Sie in dieser Methode zuerst bestimmen, ob der aktuelle Pfad leer ist, wenn es nicht leer ist. . der Standard -Tablemodel -Klasse, um das Datenmodell zu erhalten. Die Methode count () löscht zuerst die Tabelle und schaltet dann das Dateiarray mit foreach () durch, erstellt Tabellenzeilendaten mit dem Objekt [] -Rarray in der Schleife, ruft die Methode GetName () der Dateiklasse auf, um den Dateinamen abzurufen und die Länge () -Methode, um die Dateigröße abzurufen, lastModified () Methode erhält das Änderungsdatum und verwenden Sie schließlich die addrow () -Methode der Standardtablemodel -Klasse, um dem tabellarischen Modell Zeilendaten hinzuzufügen.
Der Code ist wie folgt:
Die Codekopie lautet wie folgt:
Import Java.awt.BorderLayout;
Import Java.awt.Eventqueue;
importieren java.awt.gridbagconstraints;
importieren java.awt.gridbaglayout;
import 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;
importieren javax.swing.jframe;
import Javax.swing.jlabel;
import Javax.swing.jpanel;
import Javax.swing.jscrollpane;
import Javax.swing.jtable;
importieren javax.swing.jtextfield;
import Javax.swing.border.EmptyBorder;
import Javax.swing.event.Caretevent;
import Javax.swing.event.CaretListener;
import Javax.swing.table.DefaultTablemodel;
öffentliche Klasse ListCustomTypefile erweitert JFrame {
/**
*
*/
Private statische endgültige lange Serialversionuid = -6263975104443132420L;
/**
* Benutzerdefinierter Erweiterungsfilter
*
* @Author Li Zhongwei
*/
Private Final Class CustomFilter implementiert java.io.filefilter {
@Override
public boolean Accept (Dateipfadname) {
// Erhalten Sie die angegebene Erweiterung vom Benutzer fest
String extname = extnamefield.getText ();
if (extname == null || extname.isempty ())
false zurückgeben;
if (! extname.startswith (".")) // Bestimmen Sie das Erweiterungspräfix
extname = "." + extname; // Extension Präfix
extname = extname.tolowerCase ();
// Bestimmen Sie, ob die Erweiterungs- und Filterdateiname die Anforderungen erfüllt
if (pathname.getName (). TolowerCase (). Endswith (extname))
zurückkehren;
false zurückgeben;
}
}
Private Jpanel ContentPane;
Private JTextfield Extnamefield;
Privatjtable Tisch;
private Datei Dir;
Privat -JLabel -Label;
/**
* Starten Sie die Anwendung.
*/
public static void main (String [] args) {
EventQueue.invokelater (new Runnable () {
public void run () {
versuchen {
ListCustomTypefile Frame = new ListCustOMTypeFile ();
Frame.SetVisible (True);
} catch (Ausnahme e) {
E. printstacktrace ();
}
}
});
}
/**
* Erstellen Sie den Rahmen.
*/
public ListCustomTypeFile () {
settitle ("Datei des angegebenen Typs anzeigen");
setDefaultCloseOperation (jframe.exit_on_close);
Setbounds (100, 100, 450, 300);
contentPane = new jpanel ();
ContentPane.SetBorder (neuer leererBorder (5, 5, 5, 5));
contentPane.setLayout (neuer BorderLayout (0, 0));
setContentPane (contentPane);
JPanel Panel = 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 ("Ordner auswählen");
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 (Schaltfläche, gbc_button);
label = new JLabel ("Ordner");
GridbagConstraints gbc_label = new GridbagConstraints ();
gbc_label.fill = gridbagConstraints.horizontal;
gbc_label.gridx = 1;
gbc_label.gridy = 0;
panel.Add (label, gbc_label);
JLabel Label_1 = new JLabel ("Geben Sie den angegebenen Dateierweiterungsnamen ein:");
GridbagConstraints gbc_label_1 = neue GridbagConstraints ();
gbc_label_1.anchor = gridbagConstraints.East;
gbc_label_1.insets = neue Insets (0, 0, 0, 5);
gbc_label_1.gridx = 0;
gbc_label_1.gridy = 1;
panel.add (Label_1, gbc_label_1);
extnamefield = new JTextField ();
Extnamefield.AddcaretListener (New CareTierener () {
public void careeupdate (CareEvent e) {
do_extnamefield_caretupdate (e);
}
});
extnamefield.setText (". gif");
GridbagConstraints gbc_extnamefield = new GridbagConstraints ();
gbc_extnamefield.insets = neue Insets (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);
Tabelle = new JTable ();
table.setAutoresizemode (jtable.auto_resize_off);
table.setModel (neuer DefaultTablemodel (neues Objekt [] [] {}, neuer String [] {"Dateiname", "Dateigröße", "Änderungsdatum"}) {
/**
*
*/
Private statische endgültige lange Serialversionuid = 5274214559103654856L;
boolean [] columnedItables = new boolean [] {false, false, false};
public boolean iscelleditable (int row, int spalte) {
return columnedItables [Spalte];
}
});
table.getColumnmodel (). getColumn (0) .setPreferredwidth (220);
table.getColumnmodel (). getColumn (1) .setPreferredwidth (85);
table.getColumnmodel (). getColumn (2) .setPreferredwidth (110);
scrollpane.setViewPortView (Tabelle);
}
/**
* Wählen Sie die Ereignishandhabungsmethode der Ordnertaste
*
* @param e
*/
Protected void do_button_actionperformed (actionEvent e) {
JFilechooser chooser = new JFilechoOser (); // Erstellen Sie einen Dateiauswahl
// Stellen Sie den Filter für den Selektor ein
ChooSer.SetFileSelectionMode (jFilechoOser.directories_only);
Chooser.showdialog (this, null);
Dir = chooser.getSelectedFile ();
getLabel (). setText (Dir.ToString ());
// Erhalten Sie das gefilterte Dateiarray, das den Kriterien erfüllt
listFiles ();
}
/**
* Dateien im Ordner anzeigen
*/
private void listfiles () {
if (dir == null)
zurückkehren;
// Erhalten Sie das Dateiarray, das den Kriterien erfüllt
File [] file = dirl.listfiles (neuer benutzerdefinierter filter ());
// Erhalten Sie das Datenmodell der Tabelle
DefaultTablemodel modell = (defaultTablemodel) table.getModel ();
Modell.SetRowCount (0);
Für (Dateidatei: Dateien) {// durchqueren das Dateiarray
// Tabellenzeilendaten erstellen
Object [] row = {file.getName (), file.length (),
neues Datum (Datei.LastModified ())};
model.addrow (Zeile); // Zeilendaten zum tabellarischen Modell hinzufügen
}
}
Protected void do_extnamefield_caretupdate (CareEvent e) {
listFiles ();
}
geschützte jlabel getLabel () {
Return Label;
}
}
Der Effekt wird im Bild gezeigt: