{"id":942,"date":"2018-09-17T18:40:44","date_gmt":"2018-09-17T09:40:44","guid":{"rendered":"https:\/\/chat-messenger.com\/?p=942"},"modified":"2018-12-23T01:53:04","modified_gmt":"2018-12-22T16:53:04","slug":"filesearch","status":"publish","type":"post","link":"https:\/\/chat-messenger.com\/fr\/blog\/java\/recherche-de-fichier","title":{"rendered":"Java recherche r\u00e9cursivement les fichiers"},"content":{"rendered":"<h2 class=\"common_title\"><a name=\"0\"><strong>Java<\/strong> <strong>annuaire<\/strong>depuis<strong>r\u00e9cursif<\/strong>rechercher des fichiers dans<\/a><\/h2>\n<p>\n<strong>Java<\/strong> Nous pr\u00e9sentons ici un exemple de programme qui recherche de mani\u00e8re r\u00e9cursive des fichiers dans un r\u00e9pertoire sp\u00e9cifi\u00e9, y compris les sous-r\u00e9pertoires, et obtient une liste de fichiers correspondant aux conditions de recherche.<br \/>\nCelles-ci effectuent le m\u00eame traitement que la commande UNIX ls -R et la commande Windows dir \/s.<br \/>\nVous pouvez \u00e9galement sp\u00e9cifier * comme caract\u00e8re g\u00e9n\u00e9rique dans le nom du fichier \u00e0 rechercher ou utiliser des expressions r\u00e9guli\u00e8res pour effectuer la recherche.<\/p>\n<p>\u00c0 titre d&#039;exemple d&#039;utilisation, dans le cas suivant, la liste de fichiers du r\u00e9pertoire est recherch\u00e9e de mani\u00e8re r\u00e9cursive, y compris les sous-r\u00e9pertoires, pour obtenir une liste de fichiers avec l&#039;extension java.\n<\/p>\n<div class=\"point\">\nRecherche FileSearch = new FileSearch();<br \/>\nFichier[] fichiers = search.listFiles(&quot;C:\/filelist\/&quot;, &quot;*.java&quot;);\n<\/div>\n<p><script type=\"text\/javascript\" src=\"https:\/\/chat-messenger.com\/js\/common.js?dd12sssas2223\" charset=\"UTF-8\"><\/script><br \/>\n<script type=\"text\/javascript\"> writePR(); <\/script><\/p>\n<h2 class=\"common_title\"><a name=\"1\">exemple de programme<\/a><\/h2>\n<p><textarea readonly=\"readonly\" style=\"font-size: 13px; height: 400px;\" class=\"src\" onclick=\"this.focus();this.select()\">import java.io.File;<br \/>\nimport java.text.SimpleDateFormat;<br \/>\nimport java.util.Date;<br \/>\nimport java.util.TreeSet;<\/p>\n<p>\/**<br \/>\n *<br \/>\n *\/<br \/>\nclasse publique FileSearch {<\/p>\n<p>    public static final int TYPE_FILE_OR_DIR = 1;<br \/>\n    public static final int TYPE_FILE = 2;<br \/>\n    public static final int TYPE_DIR = 3;<\/p>\n<p>    \/**<br \/>\n     * Depuis le r\u00e9pertoire sp\u00e9cifi\u00e9 [directoryPath],<br \/>\n     * Recherchez le fichier [fileName] \u00e0 rechercher de mani\u00e8re r\u00e9cursive et trouvez le fichier correspondant.<br \/>\n     * Renvoie une liste d&#039;objets fichier.<br \/>\n     *<br \/>\n     * exemple)<br \/>\n     * Fichier[] fichiers =listFiles(&quot;C:\/filelist\/&quot;, &quot;*.java&quot;);<br \/>\n     * L&#039;exemple ci-dessus recherche la liste de fichiers du r\u00e9pertoire de mani\u00e8re r\u00e9cursive et<br \/>\n     * Obtenez une liste de fichiers avec l&#039;extension java.<br \/>\n     *<br \/>\n     * @param directoryPath Chemin repr\u00e9sentant le r\u00e9pertoire dans lequel rechercher<br \/>\n     * @param fileName Nom du fichier \u00e0 rechercher<br \/>\n     * Vous pouvez sp\u00e9cifier * comme caract\u00e8re g\u00e9n\u00e9rique dans le nom du fichier.<br \/>\n     * @return Objet fichier correspondant \u00e0 la recherche<br \/>\n     *\/<br \/>\n    public File[] listFiles (String directoryPath, String fileName) {<br \/>\n        \/\/ Convertit * en caract\u00e8re g\u00e9n\u00e9rique en expression r\u00e9guli\u00e8re<br \/>\n        if (fileName != null) {<br \/>\n            fileName = fileName.replace(\u201c.\u201d, \u201c\\\\.\u201d);<br \/>\n            fileName = fileName.replace(&quot;*&quot;, &quot;.*&quot;);<br \/>\n        }<br \/>\n        return listFiles (directoryPath, fileName, TYPE_FILE, true, 0);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \u00c0 partir du r\u00e9pertoire sp\u00e9cifi\u00e9 [directoryPath], sp\u00e9cifi\u00e9 comme expression r\u00e9guli\u00e8re<br \/>\n     * Rechercher de mani\u00e8re r\u00e9cursive le fichier \u00e0 rechercher [fileNamePattern],<br \/>\n     * Renvoie une liste des objets fichier applicables.<br \/>\n     *<br \/>\n     * Vous pouvez \u00e9galement utiliser la condition de recherche pour d\u00e9terminer si la date de mise \u00e0 jour du fichier a d\u00e9pass\u00e9 le nombre de jours sp\u00e9cifi\u00e9.<br \/>\n     * Peut \u00eatre sp\u00e9cifi\u00e9.<br \/>\n     *<br \/>\n     * exemple)<br \/>\n     * Fichier[] fichiers =<br \/>\n     * listFiles(&quot;C:\/filelist\/&quot;, &quot;*.java&quot;,TYPE_FILE, true, 2);<br \/>\n     * Dans l&#039;exemple ci-dessus, la liste de fichiers du r\u00e9pertoire est recherch\u00e9e de mani\u00e8re r\u00e9cursive et mise \u00e0 jour il y a moins de 7 jours.<br \/>\n     * Obtenez une liste de fichiers avec l&#039;extension Java.<br \/>\n     *<br \/>\n     * @param directoryPath Chemin repr\u00e9sentant le r\u00e9pertoire dans lequel rechercher<br \/>\n     * @param fileNamePattern Nom du fichier \u00e0 rechercher [expression r\u00e9guli\u00e8re]<br \/>\n     * @param type L&#039;objet fichier correspondant est sp\u00e9cifi\u00e9 par [type].<br \/>\n     * Les \u00e9l\u00e9ments suivants peuvent \u00eatre sp\u00e9cifi\u00e9s<br \/>\n     * TYPE_FILE_OR_DIR\u30fb\u30fb\u30fbFichier et r\u00e9pertoire<br \/>\n     * TYPE_FILE\u30fb\u30fb\u30fbFichier<br \/>\n     * TYPE_DIR\u30fb\u30fb\u30fbR\u00e9pertoire<br \/>\n     * @param isRecursive true pour effectuer une recherche r\u00e9cursive<br \/>\n     * @param period Recherche les fichiers dont la date de mise \u00e0 jour a d\u00e9pass\u00e9 le nombre de jours sp\u00e9cifi\u00e9.<br \/>\n     * Peut \u00eatre d\u00e9fini si ou non<br \/>\n     * Non applicable si 0<br \/>\n     * Si 1 ou plus, recherchez les fichiers apr\u00e8s le nombre de jours sp\u00e9cifi\u00e9<br \/>\n     * Si inf\u00e9rieur \u00e0 -1, recherche les fichiers plus anciens que le nombre de jours sp\u00e9cifi\u00e9<br \/>\n     * @return Objet fichier correspondant \u00e0 la recherche<br \/>\n     *\/<br \/>\n    public File[] listFiles(String r\u00e9pertoirePath,<br \/>\n            Cha\u00eene fileNamePattern, type int,<br \/>\n            boolean isRecursive, int point) {<\/p>\n<p>        Fichier dir = nouveau fichier (chemin d&#039;acc\u00e8s);<br \/>\n        si (!dir.isDirectory()) {<br \/>\n            lancer une nouvelle IllegalArgumentException<br \/>\n            (&quot;Chemin sp\u00e9cifi\u00e9 dans l&#039;argument[&quot; + dir.getAbsolutePath() +<br \/>\n                    \u00ab\u00a0] n&#039;est pas un r\u00e9pertoire.\u00a0\u00bb\u00a0);<br \/>\n        }<br \/>\n        Fichier[] fichiers = dir.listFiles();<br \/>\n        \/\/ sa sortie<br \/>\n        pour (int i = 0; i &lt; files.length; i++) {<br \/>\n            Fichier fichier = fichiers[i];<br \/>\n            addFile(type, fileNamePattern, set, file, point);<br \/>\n            \/\/ Recherche r\u00e9cursive et ajout \u00e0 la liste r\u00e9cursivement s&#039;il s&#039;agit d&#039;un r\u00e9pertoire<br \/>\n            if (isRecursive &amp;&amp; file.isDirectory()) {<br \/>\n                listFiles(file.getAbsolutePath(), fileNamePattern,<br \/>\n                            type, isRecursive, point);<br \/>\n            }<br \/>\n        }<br \/>\n        return (File[]) set.toArray(new File[set.size()]);<br \/>\n    }<\/p>\n<p>    private void addFile (type int, correspondance de cha\u00eene, ensemble TreeSet,<br \/>\n            Fichier fichier, point int) {<br \/>\n        commutateur (type) {<br \/>\n        cas TYPE_FILE\u00a0:<br \/>\n            si (!file.isFile()) {<br \/>\n                retour;<br \/>\n            }<br \/>\n            casser;<br \/>\n        cas TYPE_DIR\u00a0:<br \/>\n            si (!file.isDirectory()) {<br \/>\n                retour;<br \/>\n            }<br \/>\n            casser;<br \/>\n        }<br \/>\n        if (match != null &amp;&amp; !file.getName().matches(match)) {<br \/>\n            retour;<br \/>\n        }<br \/>\n        \/\/ S&#039;il existe une sp\u00e9cification indiquant si le nombre de jours sp\u00e9cifi\u00e9 s&#039;est \u00e9coul\u00e9<br \/>\n        si (p\u00e9riode != 0) {<br \/>\n            \/\/ Date de mise \u00e0 jour du fichier<br \/>\n            Date lastModifiedDate = new Date(file.lastModified());<br \/>\n            Cha\u00eene lastModifiedDateStr = new SimpleDateFormat(&quot;aaaaMMjj&quot;)<br \/>\n                    .format(lastModifiedDate);<\/p>\n<p>            \/\/ Date sp\u00e9cifi\u00e9e (calcul\u00e9e en millisecondes par jour)<br \/>\n            long oneDayTime = 24L * 60L * 60L * 1000L\u00a0;<br \/>\n            longue p\u00e9riodeTime = oneDayTime * Math.abs(p\u00e9riode);<br \/>\n            Date d\u00e9sign\u00e9eDate =<br \/>\n                new Date(System.currentTimeMillis() \u2013 periodTime);<br \/>\n            Cha\u00eene d\u00e9sign\u00e9eDateStr = new SimpleDateFormat(&quot;aaaaMMjj&quot;)<br \/>\n                    .format (date d\u00e9sign\u00e9e);<br \/>\n            si (p\u00e9riode &gt; 0) {<br \/>\n                if (lastModifiedDateStr.compareTo(designatedDateStr) &lt; 0) {<br \/>\n                    retour;<br \/>\n                }<br \/>\n            } autre {<br \/>\n                if (lastModifiedDateStr.compareTo(designatedDateStr) &gt; 0) {<br \/>\n                    retour;<br \/>\n                }<br \/>\n            }<br \/>\n        }<br \/>\n        \/\/ Stocker dans la liste si toutes les conditions sont remplies<br \/>\n        set.add(fichier);<\/p>\n<p>    }<\/p>\n<p>    \/** Utilisez TreeSet pour trier par ordre alphab\u00e9tique. *\/<br \/>\n    ensemble TreeSet priv\u00e9 = new TreeSet ();<\/p>\n<p>    \/**<br \/>\n     * Si vous souhaitez continuer \u00e0 utiliser l&#039;instance apr\u00e8s l&#039;avoir cr\u00e9\u00e9e, utilisez cette m\u00e9thode.<br \/>\n     * L&#039;appel doit \u00eatre lib\u00e9r\u00e9.<br \/>\n     * exemple)<br \/>\n     * Recherche FileSearch = new FileSearch();<br \/>\n     * Fichier[] f1 = search.listFiles(C:\/filelist\/\u201d, \u201c*.java\u201d);<br \/>\n     * search.clear();<br \/>\n     * File[] f2 = search.listFiles(&quot;C:\/filelist\/&quot;, &quot;*.jsp&quot;);<br \/>\n     *\/<br \/>\n    public void clear(){<br \/>\n    \tmettre au clair();<br \/>\n    }<br \/>\n}<br \/>\n<\/textarea><\/p>\n\n<h2 class=\"common_title\"><a name=\"2\">R\u00e9sultat de l&#039;ex\u00e9cution<\/a><\/h2>\n<p>\nPour v\u00e9rifier l&#039;exemple de programme, j&#039;ai cr\u00e9\u00e9 un r\u00e9pertoire filelist et pr\u00e9par\u00e9 les fichiers suivants.<br \/>\n<br \/>\nLe nom du fichier et la date de mise \u00e0 jour sont affich\u00e9s.<\/p>\n<p>*Veuillez noter que la date actuelle est<strong>2007\/08\/18<\/strong>Supposons que ce soit le cas.\n<\/p>\n<pre class=\"console\">C:\\filelist \u2502 aaa.java 2007\/08\/18 \u2502 bbb.java 2007\/08\/18 \u2514\u2500dir ccc.java 2007\/07\/17 ddd.java 2007\/08\/18 eee.jpg 2007\/08\/16\r\n<\/pre>\n<p>\u25c6Exemple d&#039;ex\u00e9cution<br \/>\n<textarea readonly=\"readonly\" style=\"font-size: 13px; height: 400px;\" class=\"src\" onclick=\"this.focus();this.select()\">  public static void main(String[] args) {<br \/>\n      String path = &#8220;C:\\\\filelist&#8221;;<br \/>\n      FileSearch search = new FileSearch();<\/p>\n<p>      System.out.println(\u00ab\u00a0\\nweightObtenir tous les fichiers\u00a0\u00bb);<br \/>\n      Fichier[] fichiers = search.listFiles(chemin, null);<br \/>\n      printFileList(fichiers);<br \/>\n      search.clear();<\/p>\n<p>      System.out.println(\u00ab\\ngreet.Obtenir le fichier avec l&#039;extension java\u00bb);<br \/>\n      files = search.listFiles(chemin, \u00ab *.java \u00bb);<br \/>\n      printFileList(fichiers);<br \/>\n      search.clear();<\/p>\n<p>      System.out.println(\u00ab\u00a0\\nweight\u00a0Obtenir tous les fichiers et r\u00e9pertoires\u00a0\u00bb);<br \/>\n      files = search.listFiles(chemin, null,search.TYPE_FILE_OR_DIR, true, 0);<br \/>\n      printFileList(fichiers);<br \/>\n      search.clear();<\/p>\n<p>      System.out.println(&quot;\\nQuantityObtenir les fichiers mis \u00e0 jour dans les 2 jours \u00e0 compter de la date actuelle&quot;);<br \/>\n      files = search.listFiles(chemin, null,search.TYPE_FILE, true, 2);<br \/>\n      printFileList(fichiers);<br \/>\n      search.clear();<\/p>\n<p>      System.out.println(\u00ab\u00a0\\n \u25cfR\u00e9cup\u00e9rer les anciens fichiers datant de plus de 30 jours \u00e0 compter de la date actuelle\u00a0\u00bb);<br \/>\n      files = search.listFiles(chemin, null,search.TYPE_FILE, true, -30);<br \/>\n      printFileList(fichiers);<br \/>\n      search.clear();<br \/>\n  }<\/p>\n<p>  private static void printFileList (Fichiers [] fichiers) {<br \/>\n      pour (int i = 0; i &lt; files.length; i++) {<br \/>\n          Fichier fichier = fichiers[i];<br \/>\n          System.out.println((i + 1) + \u00ab : \u00bb + fichier);<br \/>\n      }<br \/>\n  }<br \/>\n<\/textarea><br \/>\n<br \/>\n\u25c6R\u00e9sultat de sortie<\/p>\n<pre class=\"console\">\u25cfR\u00e9cup\u00e9rer tous les fichiers 1 : C:\\filelist\\aaa.java 2 : C:\\filelist\\bbb.java 3 : C:\\filelist\\dir\\ccc.java 4 : C:\\filelist\\dir\\ddd.java 5 : C:\\filelist\\dir\\eee.jpg \u25cfObtenir les fichiers avec l&#039;extension java 1 : C:\\filelist\\aaa.java 2 : C:\\filelist\\bbb.java 3 : C:\\filelist\\dir\\ccc .java 4 : C:\\filelist\\dir\\ddd.java \u25cfObtenir tous les fichiers et r\u00e9pertoires 1 : C:\\filelist\\aaa.java 2 : C:\\filelist\\bbb.java 3 : C:\\filelist\\dir 4 : C:\\filelist \\dir\\ccc.java 5 : C:\\filelist\\dir\\ddd.java 6 : C:\\filelist\\dir\\eee.jpg \u25cfFichiers mis \u00e0 jour dans les 2 jours \u00e0 compter de la date actuelle Obtenez 1 : C:\\filelist\\aaa. java 2 : C:\\filelist\\bbb.java 3 : C:\\filelist\\dir\\ddd.java 4 : C:\\filelist\\dir\\eee.jpg \u25cfDate actuelle R\u00e9cup\u00e9rer les anciens fichiers de plus de 30 jours \u00e0 partir de 1\u00a0: C\u00a0: \\filelist\\dir\\ccc.java\r\n<\/pre>","protected":false},"excerpt":{"rendered":"<p>Java Rechercher des fichiers de mani\u00e8re r\u00e9cursive \u00e0 partir d&#039;un r\u00e9pertoire En Java, \u00e0 partir d&#039;un r\u00e9pertoire sp\u00e9cifi\u00e9, y compris les sous-r\u00e9pertoires [\u2026]<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":""},"categories":[19],"tags":[],"_links":{"self":[{"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/posts\/942"}],"collection":[{"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/comments?post=942"}],"version-history":[{"count":4,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/posts\/942\/revisions"}],"predecessor-version":[{"id":1881,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/posts\/942\/revisions\/1881"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/media?parent=942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/categories?post=942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/tags?post=942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}