raison:
Parce que certains tutoriels vidéo sont téléchargés en ligne, certains d'entre eux ont de très longs noms et sont généralement promus par des institutions ou des sites Web, il n'est donc pas pratique de voir directement l'introduction de la vidéo, de sorte que la première fonction suivante a été faite.
Parce que l'enseignant a envoyé trop de dossiers dans les didacticiels, il était trop difficile de le découvrir un par un, donc la deuxième fonction a été faite.
Je viens d'apprendre la connaissance des fichiers Java et du streaming récemment, donc je viens de pratiquer mes compétences. Il s'agit également de mon premier programme EXE, donc je peux le partager.
(Exportez le fichier JAR et utilisez l'outil EXE4J pour générer le fichier EXE, cette pièce est omise)
Connaissances utilisées:
Utilise des connaissances des fichiers, des flux et des connaissances simples de l'interface graphique en Java.
Fonction:
Fonction 1: Supprimez certains mots clés dans le nom du fichier, et vous pouvez également définir des mots de substitution.
Fonction 2: Extraire tous les fichiers de types spécifiques sous un chemin et les placer dans un nouveau dossier. S'il y a des fichiers en double, ils seront automatiquement triés et ajoutés des nombres pour les distinguer.
Regardez d'abord l'interface de démarrage et le fichier EXE généré:
La première démonstration de fonctionnalité:
Aucune opération avant:
Après l'opération: supprimez tous les mêmes mots clés dans la partie précédente
Il existe également une fonction de retrait:
La deuxième démonstration de fonction:
Avant l'opération:
Après l'opération:
Bien sûr, il y a aussi une fonction de retrait
Analyse du code source:
Classe de démarrage:
Package Guuze; Test de classe publique {public static void main (String [] args) {// Démarrez l'interface graphique, c'est-à-dire l'interface utilisateur new showgui ();}}Show GUI Class:
Package Guuze; Import Java.awt.dimension; import java.awt.flowlayout; import java.awt.font; import java.awt.image; import java.awt.toolkit; import java.awt.event.mousadapter; import java.awt.event.mousevent; import java.awt.event.wadownow java.awt.event.windowevent; import java.io.file; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jtextfield; classe publique showgui {private jframe f; private jbutton b1; private jbutton tf2; private jbutton b3; private jbutfield tf1; private jbutton tf2; private jbutton b3; private jbutfield tf1; private jbutton tf2; private jbutton b3; private jbutfield tf1; private jbutton tf2; private jbutton b3; private jbutfield Tf1 Jtextfield TF3; private JButton B4; private jbutton b5; private jbutton b6; private jtextfield tf4; private jtextfield tf5; private jTextfield tf6; private static string s1; public showgui () {// call startGui () directement;} public Void startgu () {f = new bgset (); // utilisé pour définir l'image de fond f. FlowLayout ()); Image icon = toolkit.getDefaultToolkit (). GetImage ("image / 4.jpg"); // définir l'icône de logo supérieure à gauche f.seticonImage (icon); // 6 boutons b1 = new JButton ("start"); b2 = new Jbutton ("rétract"); b3 = new JButton("Exit");b4 = new JButton("One-click extraction");b5 = new JButton("Exit");b6 = new JButton("Exit");// The size of 6 buttons b1.setPreferredSize(new Dimension(89, 39));b2.setPreferredSize(new Dimension(89, 39)); b3.setPreferredSize (nouvelle dimension (89, 39)); b4.setPreferredSize (nouvelle dimension (89, 39)); b5.setPreferredSize (nouvelle dimension (89, 39)); new JTextfield ("Veuillez saisir Absolute_Path", 40); tf1.setfont (new Font ("s'il vous plaît saisir Absolute_path", 40); tf1.setfont (new Font ("s'il vous plaît saisir", font.plain, 25)); tf1.setbounds (200, 15, 550, 126); tf2 = newthETFIELD ("s'il vous plaît contacter les mots-clés", 40); FONT ("Veuillez saisir les mots clés", Font.Plain, 25)); tf2.setBounds (200, 15, 550, 126); tf3 = new JTextField ("Veuillez saisir Remplacewords", 40); TF3.Setfont (New Font ("Zongyi", Font.Plain, 25)); tf3.SetBounds ("200, 15, 550, 126); TF4 = entrée absolue_path ", 40); tf4.setfont (new Font (" zongyi ", font.plain, 25)); tf4.setBounds (200, 15, 550, 126); tf5 = new JTextField (" s'il vous plaît saisir Target_Path ", 40); tf5.Setfont (new Font (s'il vous plaît entrée Target_Path", 40); Tf5.Setf Font.Plain, 25)); tf5.setBounds (200, 15, 550, 126); tf6 = new JTextField ("Veuillez saisir FileType", 40); tf6.setfont (nouvelle police ("s'il vous plaît saisir" F.ADD (TF1); F.ADD (TF2); F.ADD (TF3); F.ADD (B1); F.ADD (B2); F.ADD (B3); F.ADD (TF4); F.ADD (TF5); F.ADD (TF6); F.ADD (B4); F.ADDD (B5); Fonction d'écoute d'événement MyEvent (); f.SetVisible (true);} private void myEvent () {// cliquez sur le coin supérieur droit × pour quitter f.addwindowListener (new WindowAdapter () {public void windowclosing (windowevent e) {System.Exit (0);}}); // cliquez sur l'événement B1.AddmousSener (new mousadapter () void Mouseclicked (MouseEvent E) {S1 = tf1.getText (); // faire des jugements sur la valeur dans la zone de texte. Si rien n'est écrit, il est traité comme vide. Ce qui suit est similaire à if (s1.equals ("s'il vous plaît saisir le chemin")) {s1 = "";} fichier file = new File (s1); String test []; test = file.list (); if (s2.equals ("s'il vous plaît saisir les mots de remplacement")) {s2 = ";} string s3 = tf. (S3.Equals ("Veuillez saisir Remplacewords")) {S3 = "";} essayez {// Démarrer la fonction Rename RenameFunction.Sure (S1, S2, S3);} Catch (Exception E1) {}}}); // Cliquez sur l'événement de réponse B2.AddmouseListener (New MouseAdapter () {Gublic MouseClicked (Mousevent E) {) {Gublic Veed MouseClicked (Mousevent E) {) {{Gublic Void MouseClicked (Mousevent E) {) {{Guber {try {if (! s1.equals ("s'il vous plaît saisir le chemin")) {// start reverkereName.Revoke (s1);}} catch (exception e2) {}} catch (exception e1) {}}}); // cliquez sur l'événement de réponse b3.AddMouseListener (New MouseAdapter () {public Void MouseClicked (Mousevent e) {System.exit (0); Absolute_path ")) {s2 =" ";} if (s3.equals (" s'il vous plaît saisir cible_path ")) {s3 =" ";} if (s4.equals (" s'il vous plaît saisir FileType ")) {S4 =" ";} // Démarrer la fonction de recherche de fichiers SearchFonction. B5.AddMouseListener (new MouseAdapter () {public void MouseClicked (MouseEvent E) {String S2 = tf5.GetText (); // Démarrer la fonction de retrait de ReopovetargetFile.Startdelete (S2);}}); // Cliquez sur l'événement de réponse B6.AddMouseListener (New MouseAdapter () {public Void Mouseclicked (MouseEvent E) {System.Exit (0); // Sortie}});}} Classe de paramètres d'image d'arrière-plan GUI:
Package Guuze; Importer javax.swing.imageicon; import javax.swing.jframe; import javax.swing.jLabel; importer javax.swing.jpanel; classe publique bgset étend jframe {private static final SerialversionUid = 1l; public bgset () {// set titre super ("Grandfish"); Setbounds (100, 600, 600, title super ("Greatfis 600); // Chemin vers l'image d'arrière-plan. String path = "Image / 3.jpg"; ImageIcon background = new ImageIcon (path); jLabel label = new JLabel (background); label.setbounds (0, 0, this.getWidth (), this.getheight ()); jpanel imagepanel = (jpanel) this.getContentPane (); imagePanel.SetOpaque (false); this.getLayeredPane (). Add (label, nouveau Integer (Integer.Min_Value));}} Classe de renommée de fichiers:
Package Guuze; Importer java.io.file; import java.util.scanner; public class RenameFunction {static scanner input = new scanner (System.in); public static string test1 []; public static void Sure (String S1, String S2, String S3) lance une exception {fichier de fichier = nouveau fichier (S1); Test de chaîne []; test = file.list (); i = 0; i <test.length; i ++) {// Déterminez s'il y a un mot-clé que vous souhaitez supprimer si (test [i] .Indexof (S2)! = -1) {// Fichiers) {if (f.isfile ()) {// en boucle le nom de renom F.Renameto (nouveau fichier (S1 + "/" + test [i ++]));}}}}}} Classe de fonction de renommée et de retirer:
Package Guuze; Importer java.io.file; public class RevokenName {public static void révoke (String S1) lève une exception {// re-assign le fichier de nom d'origine = file = new File (s1); file [] files = file.listFiles (); for (int i = 0; i <renameFunction.Test1.Length;) {for (file f: file) {if (f.) Notez que Test1f.Renameto (nouveau fichier (S1 + "/" + renameFunction.test1 [i ++]));}}}}}} Classe de copie de fichiers:
Package Guuze; Importer Java.io.BufferedInputStream; Importer Java.io.BufferedOutputStream; Importer Java.io.file; Importer Java.io.FileInputStream; Importer Java.io.fileoutputStream; Importer Java.io.ioexception; Public Class SearchFonction {static int count Target_Path, String file_type) {// Démarrer la fonction de boucle xunhuan (source_path, target_path, file_type);} public static void xunhuan (string source_path, string target_path, string file_type) {file file = new File (source_path); String names [] = file.list (); // déterminer si elle est en train de terminer les fichiers [] = file. want if (file.sisfile () && file.getabsolutepath (). Endswith (file_type)) {string new_path = cible_path + "/" + file.getName (); file file1 = new file (new_path); if (! file1.exists ()) {try {file1.createwfile ();} capture (ioexe {// Si le nom du fichier est le même, ajoutez un nombre avant le point pour distinguer // veuillez utiliser //. pour le séparer au lieu de.string [] arr = new_path.split ("//."); String new_path1 = arr [0] + count + "." + arr [1]; file1.renameto (nouveau fichier (new_path1));} // il s'agit d'un fichier, alors commencez à copier le fichier fileCopyByBuffStreamArray (file.getabsolutepath (), new_path);} else if (file.isfile () &&! file.getabsolupath (). Méthode Body, tout simplement ne faites pas de traitement} else {for (int i = 0; i <names.length; i ++) {// pas un fichier, itérate xunhuan (file.getabsolupath () + "/" + nom Écrire des fichiers avec une connaissance de Streams File File = new File (srcfile); file file1 = new File (TargetFile); fileInputStream fis = null; fileoutputStream fos = null; tampredInputStream bis = null; bufferedoutputStream bos = null; try {fis = new FileInputStream (fichier); fos = new FileoutPutStream (file1); BufferedInputStream (Fis); bos = new tampondOutputStream (fos); int len = 0; byte [] b = new octet [10]; while ((len = bis.read (b))! = -1) {bos.write (b, 0, len);} bos.flush ();} catch (ioexception e) {} {fis.close (); fos.close (); bis.close (); bos.close ();} catch (ioException e) {}}}} Classe de rétraction de copie de fichiers:
Package Guuze; Importer java.io.file; public class removetargetFile {public static void startDelete (String path) {fichier file = new File (path); deleteFile (fichier);} private static void DeleteFile (fichier file) {// rappelez-vous de ne pas supprimer le dossier du path if (file.exists ()) {if (file.fil delete file.delete ();} else if (file.isdirectory ()) {file [] file = file.listFiles (); for (int i = 0; i <files.length; i ++) {// Si ce n'est pas un fichier, itérera DeleteFile (fichiers [i]);}}}}}Ce qui précède est le renommage par lots de fichiers Java et l'extraction par lots de types spécifiques de fichiers introduits par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!