Die Dateibewegung ist ein häufig verwendeter Betrieb in der Computerressourcenverwaltung, die im Betriebssystem durch Schneiden und Kopieren von Dateien oder das Ziehen der Maus erreicht werden kann. In der Programmierung von Java -Dateien wird jedoch hauptsächlich durch das Kopieren der Datei an das Ziel und dann alle Dateien gelöscht. Dies zeigt keine Nachteile für kleine Dateien. Wenn Sie jedoch mehrere große Dateien verschieben, werden Ressourcen und Abfallsysteme verlangsamt. In diesem Beispiel wird die schnelle Bewegung von Dateien über die Renameto () -Methode der Dateiklasse direkt realisiert.
Ideenanalyse:
Erstens ist die Ansichtsschicht. Hier gibt es einen Vorschlag, da bei einigen Kontrollereignissen häufig auf andere Steuerelemente zugegriffen werden und die von der Ereignismethode des Steuerelements verwendeten Parameter fast die feste Aktionsereignisklasse sind und andere Parameter selten übergeben werden. Selbst wenn die Ansicht automatisch mit Drag -Steuerelementen generiert wird, sollten diese Steuerelemente als Mitgliedsvariablen der Klasse im Code festgelegt werden. In diesem Beispiel wird die JPanel -Steuerung als Container für andere Steuerelemente verwendet. Quellordner und Zielordner.
Dann gibt es die Modellschicht. Für die Browsertaste, um den Pfad zum Dateinamen-Array und den Zielordner im Quellordner zu erhalten Speichern Sie den Zielweg.
Erstellen Sie nach der Auswahl der Seting -Datei die SetMultiSElectier (True). showopendialog (this); , durch Die setText ("") -Methode der jTextfield () -Klassesleichte löscht das Textfeld, um den Datensatz des vorherigen Vorgangs zu entfernen, ein neues StringBuilder -Objekt zu erstellen, über das Dateiarray über das Dateiarray () und verbindet den Dateinamen über den Append (Append (append ) Methode der StringBuilder -Klasse, da am meisten ein "," vorne "ist und dann die Substring () -Methode der StringBuilder -Klasse verwenden, um die Zeichenfolge aller Dateinamen abzurufen und die Dateiname -Zeichenfolge über das Textfeld über das Textfeld anzuzeigen Die setText () -Methode der jTextfieldl -Klasse.
Erstellen Sie zum Auswählen des Ziel -Ordners zum Durchsuchen eines JFilechoser -Datei -Selektors. Das Dialogfeld "Datei Öffnen" und mit dem JFilechooser -Dialogfeld das Dialogfeld "Dateiöffnung" angezeigt. .
Für die Ereignisverarbeitungsmethode zum Verschieben von Schaltflächen verwenden Sie zunächst das Längenattribut des Arrays, um zu bestimmen, ob es im Dateiarray Elemente gibt. Element im Array und verwenden Sie die jTextArea -Steuerung Die append () -Methode Zeigt den Bewegungsdatensatz an, verwendet die Methode renameto () der Dateiklasse, um die Dateibewegung zu realisieren, und verwendet schließlich die append () -Methode des jTextarea -Steuerelements, um die anzuzeigen Informationen zur Vervollständigung von Bewegungen.
Für die Ereignisbearbeitungsmethode der Schließknaste verwenden Sie die METHODE der Systemklasse Exit (), um das Programm zu beenden.
Der Code ist wie folgt:
Die Codekopie lautet wie folgt:
Import Java.awt.Eventqueue;
öffentliche Klasse QuickMoveFiles erweitert JFrame {
/**
*
*/
Private statische endgültige lange Serialversionuid = -666045931923008374L;
Private Jpanel ContentPane;
private jtextarea infoarea;
Private JTextfield SourceFolderfield;
Private JTextField TargetFolderfield;
private Datei [] Dateien;
private Datei Dir;
/**
* Starten Sie die Anwendung.
*/
public static void main (String [] args) {
EventQueue.invokelater (new Runnable () {
public void run () {
versuchen {
QuickMoveFiles Frame = new QuickMoveFiles ();
Frame.SetVisible (True);
} catch (Ausnahme e) {
E. printstacktrace ();
}
}
});
}
/**
* Erstellen Sie den Rahmen.
*/
public QuickMoveFiles () {
settitle ("/u5feb/u901f/u6279/u91cf/u79fb/u52a8/u6587/u4ef6");
setDefaultCloseOperation (jframe.exit_on_close);
Setbounds (100, 100, 507, 299);
contentPane = new jpanel ();
ContentPane.SetBorder (neuer leererBorder (5, 5, 5, 5));
setContentPane (contentPane);
Gridbaglayout gbl_contentPane = new Gridbaglayout ();
gbl_contentPane.columnwidths = new int [] {0, 178, 0, 0, 0, 0};
gbl_contentPane.rowHeights = new int [] {0, 0, 169, 0, 0};
gbl_contentPane.ColumnWeights = New Double [] {0,0, 1,0, 0,0, 0,0, 0,0,,
Double.min_value};
gbl_contentPane.rowgewichtet = neues double [] {0,0, 0,0, 1,0, 0,0,,
Double.min_value};
contentPane.setLayout (gbl_contentPane);
JLabel label = new JLabel ("/u9009/u62e9/u6e90/u6587/u4ef6/uff1a");
GridbagConstraints gbc_label = new GridbagConstraints ();
gbc_label.anchor = gridbagConstraints.East;
gbc_label.insets = neue Insets (0, 0, 5, 5);
gbc_label.gridx = 0;
gbc_label.gridy = 0;
contentPane.add (Etikett, gbc_label);
SourceFolderfield = new JTextField ();
GridbagConstraints GBC_SourceFolderfield = New GridbagConstraints ();
gbc_sourceFolderfield.gridwidth = 3;
gbc_sourceFolderfield.insets = neue Insets (0, 0, 5, 5);
gbc_sourceFolderfield.fill = gridbagconstraints.horizontal;
gbc_sourceFolderfield.gridx = 1;
gbc_sourceFolderfield.gridy = 0;
contentPane.add (SourceFolderfield, gbc_sourcefolderfield);
SourceFolderfield.SetColumns (10);
Jbutton browserButton1 = new Jbutton ("/u6d4f/u89c8");
browserbutton1.addactionListener (new actionListener () {
public void actionperformed (actionEvent e) {
Do_BrowserButton1_Actionperformed (e);
}
});
GridbagConstraints GBC_BrowserButton1 = neue GridbagConstraints ();
GBC_BrowserButton1.Insets = neue Insets (0, 0, 5, 0);
gbc_browserButton1.gridx = 4;
gbc_browserButton1.gridy = 0;
contentPane.add (BrowserButton1, GBC_BrowserButton1);
JLabel Label_1 = new JLabel (
"/u9009/u62e9/u76ee/u6807/u6587/u4ef6/u5939/uff1a");
GridbagConstraints gbc_label_1 = neue GridbagConstraints ();
gbc_label_1.anchor = gridbagConstraints.East;
gbc_label_1.insets = neue Insets (0, 0, 5, 5);
gbc_label_1.gridx = 0;
gbc_label_1.gridy = 1;
contentPane.add (Label_1, gbc_label_1);
targetFolderfield = new JTextField ();
GridbagConstraints gbc_targetFolderfield = new GridbagConstraints ();
gbc_targetFolderfield.gridwidth = 3;
GBC_TARGETFOLDERFIELD.InSets = neue Insets (0, 0, 5, 5);
GBC_TARGETFOLDERFIELD.FILL = GRIDBALLCONSTRAINTs.Horizontal;
gbc_targetFolderfield.gridx = 1;
gbc_targetFolderfield.gridy = 1;
contentPane.add (targetFolderfield, gbc_targetFolderfield);
targetFolderfield.setColumns (10);
Jbutton browserButton2 = new Jbutton ("/u6d4f/u89c8");
browserbutton2.addactionListener (new actionListener () {
public void actionperformed (actionEvent e) {
Do_BrowserButton2_ActionPerformed (e);
}
});
GridbagConstraints GBC_BrowserButton2 = neue GridbagConstraints ();
GBC_BrowserButton2.Insets = neue Insets (0, 0, 5, 0);
gbc_browserbutton2.gridx = 4;
gbc_browserbutton2.gridy = 1;
contentPane.add (BrowserButton2, GBC_BrowserButton2);
JLabel Label_2 = new JLabel ("/u64cd/u4f5c/u8bb0/u5f55/uff1a");
GridbagConstraints gbc_label_2 = neue GridbagConstraints ();
gbc_label_2.anchor = gridbagConstraints.East;
gbc_label_2.insets = neue Insets (0, 0, 5, 5);
gbc_label_2.gridx = 0;
gbc_label_2.gridy = 2;
contentPane.add (Label_2, gbc_label_2);
JScrollPane scrollpane = new JScrollpane ();
GridbagConstraints gbc_scrollpane = new GridbagConstraints ();
gbc_scrollpane.gridwidth = 4;
gbc_scrollpane.insets = neue Insets (0, 0, 5, 0);
gbc_scrollpane.fill = gridbagconstraints.both;
gbc_scrollpane.gridx = 1;
gbc_scrollpane.gridy = 2;
contentPane.add (scrollpane, gbc_scrollpane);
infoArea = new JTextArea ();
scrollpane.setViewPortView (infoarea);
Jbutton MoveButton = New Jbutton ("/u79FB/U52A8");
moveButton.addactionListener (new actionListener () {
public void actionperformed (actionEvent e) {
do_moveButton_actionPerformed (e);
}
});
GridbagConstraints gbc_moveButton = new GridbagConstraints ();
gbc_moveButton.insets = neue Insets (0, 0, 0, 5);
gbc_moveButton.gridx = 1;
gbc_moveButton.gridy = 3;
contentPane.add (MoveButton, gbc_moveButton);
Jbutton closeButton = new Jbutton ("/u5173/u95ed");
CloseButton.AddactionListener (new ActionListener () {
public void actionperformed (actionEvent e) {
do_closeButton_actionPerformed (e);
}
});
GridbagConstraints GBC_CLOSEButton = New GridbagConstraints ();
gbc_closeButton.insets = neue Insets (0, 0, 0, 5);
gbc_closeButton.gridx = 2;
gbc_closeButton.gridy = 3;
contentPane.add (CloseButton, gbc_closeButton);
}
/**
* Wählen Sie die Schaltfläche Browser für die Quelldatei aus
*
* @param e
*/
Protected void Do_BrowserButton1_Actionperformed (actionEvent e) {
JFilechooser chooser = new JFilechoOser (); // Erstellen Sie einen Dateiauswahl
Chooser.setMultiselectedenabled (true); // Datei mehrere Auswahl festlegen
int option = chooser.showopendialog (this); // Dateiöffnungsdialogfeld anzeigen
if (option == JFILECHOOSER.Approve_Option) {
Dateien = chooser.getSelectedFiles (); // Erhalten Sie das ausgewählte Dateiarray
SourceFolderfield.setText (""); // Das Textfeld löschen
StringBuilder filessstr = new StringBuilder ();
Für (Dateidatei: Dateien) {// durchqueren das Dateiarray
filessstr.append ("," + file.getName ()); // Dateiname verbinden
}
String str = filessstr.substring (1); // Strings für alle Dateinamen erhalten
SourceFolderfield.setText (STR); // Dateinameninformationen auf das Textfeld festlegen
} anders {
Dateien = neue Datei [0];
SourceFolderfield.setText (""); // Das Textfeld löschen
}
}
/**
* Wählen Sie die Browsertaste für den Zielordner aus
*
* @param e
*/
Protected void Do_BrowserButton2_ActionPerformed (actionEvent e) {
JFilechooser chooser = new JFilechoOser (); // Erstellen Sie einen Dateiauswahl
// Einstellen des Selektors funktioniert nur für Ordner
ChooSer.SetFileSelectionMode (jFilechoOser.directories_only);
int option = chooser.showopendialog (this); // Dateiöffnungsdialogfeld anzeigen
if (option == JFILECHOOSER.Approve_Option) {
Dir = Chooser.getSelectedFile (); // Erhalten Sie den ausgewählten Ordner
targetFolderfield.setText (Dir.ToString ()); // Ordner zum Textfeld anzeigen
} anders {
Dir = null;
targetFolderfield.setText ("");
}
}
/**
* Methode zur Handhabung der Schaltfläche Event Ereignis schließen
*
* @param e
*/
Protected void do_closebutton_actionPerformed (actionEvent e) {
System.exit (0);
}
/**
* Wie man mit Ereignissen beweglicher Tasten umgeht
*
* @param e
*/
Protected void do_moveButton_actionPerformed (actionEvent e) {
if (Dateien.length <= 0 || DIR == NULL) // Bestimmen Sie, ob im Dateiarray Elemente vorhanden sind
zurückkehren;
Für (Dateidatei: Dateien) {// durchqueren das Dateiarray
Datei newfile = new Datei (DIR, Datei.getName ()); // Erstellen einer mobilen Zieldatei
infoarea.append (Datei.getName () + "/t zu/t" + dir); // Moving Record anzeigen
Datei.Renameto (Newfile); // Dateibewegung
infoArea.append ("------ complete/n"); // Zeigen Sie die Informationen zur Bewegung vollständig an
}
// Der Anzeigvorgang ist abgeschlossen
infoArea.append ("##################################################################################################################################################################################################### zurild ##/N");
}
}
Der Effekt wird im Bild gezeigt: