{"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\/id\/blog\/java\/pencarian-berkas","title":{"rendered":"Java mencari file secara rekursif"},"content":{"rendered":"<h2 class=\"common_title\"><a name=\"0\"><strong>Jawa<\/strong> <strong>direktori<\/strong>dari<strong>rekursif<\/strong>mencari file di<\/a><\/h2>\n<p>\n<strong>Jawa<\/strong> Di sini kami memperkenalkan contoh program yang secara rekursif mencari file dalam direktori tertentu, termasuk subdirektori, dan memperoleh daftar file yang cocok dengan kondisi pencarian.<br \/>\nIni melakukan pemrosesan yang sama seperti perintah UNIX ls -R dan perintah Windows dir \/s.<br \/>\nAnda juga dapat menentukan * sebagai karakter wildcard dalam nama file yang akan dicari, atau menggunakan ekspresi reguler untuk mencari.<\/p>\n<p>Sebagai contoh penggunaan, pada kasus berikut, pencarian daftar file direktori dilakukan secara rekursif termasuk subdirektori untuk mendapatkan daftar file yang berekstensi java.\n<\/p>\n<div class=\"point\">\nPencarian FileSearch = Pencarian File baru();<br \/>\nFile[] file = pencarian.listFiles(\u201cC:\/filelist\/\u201d, \u201c*.java\u201d);\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\">contoh program<\/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 \/>\nPencarian File kelas publik {<\/p>\n<p>    int akhir statis publik TYPE_FILE_OR_DIR = 1;<br \/>\n    int akhir statis publik TYPE_FILE = 2;<br \/>\n    int akhir statis publik TYPE_DIR = 3;<\/p>\n<p>    \/**<br \/>\n     * Dari direktori yang ditentukan [directoryPath],<br \/>\n     * Cari file [fileName] yang akan dicari secara rekursif dan temukan file yang sesuai.<br \/>\n     * Mengembalikan daftar objek file.<br \/>\n     *<br \/>\n     * contoh)<br \/>\n     * File[] file =listFiles(\u201cC:\/filelist\/\u201d, \u201c*.java\u201d);<br \/>\n     * Contoh di atas mencari daftar file direktori secara rekursif dan<br \/>\n     * Dapatkan daftar file dengan ekstensi java.<br \/>\n     *<br \/>\n     * @param DirectoryPath Path mewakili direktori yang akan dicari<br \/>\n     * @param fileName Nama file yang akan dicari<br \/>\n     * Anda dapat menentukan * sebagai karakter wildcard dalam nama file.<br \/>\n     * @return Objek file yang cocok dengan pencarian<br \/>\n     *\/<br \/>\n    File publik[] listFiles(Jalur direktori string, Nama file string) {<br \/>\n        \/\/ Konversikan * sebagai karakter wildcard ke ekspresi reguler<br \/>\n        jika (Namafile != null) {<br \/>\n            Namafile = Namafile.ganti(\u201c.\u201d, \u201c\\\\.\u201d);<br \/>\n            Namafile = Namafile.ganti(\u201c*\u201d, \u201c.*\u201d);<br \/>\n        }<br \/>\n        kembalikan listFiles(directoryPath, nama file, TYPE_FILE, true, 0);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Dari direktori tertentu [directoryPath], ditentukan sebagai ekspresi reguler<br \/>\n     * Pencarian secara rekursif untuk file yang akan dicari [fileNamePattern],<br \/>\n     * Mengembalikan daftar objek file yang berlaku.<br \/>\n     *<br \/>\n     * Anda juga dapat menggunakan kondisi pencarian untuk menentukan apakah tanggal pembaruan file telah melewati jumlah hari yang ditentukan.<br \/>\n     * Dapat ditentukan.<br \/>\n     *<br \/>\n     * contoh)<br \/>\n     * Berkas[] berkas =<br \/>\n     * listFiles(\u201cC:\/filelist\/\u201d, \u201c*.java\u201d,TYPE_FILE, benar, 2);<br \/>\n     * Dalam contoh di atas, daftar file direktori dicari secara rekursif dan diperbarui kurang dari 7 hari yang lalu.<br \/>\n     * Dapatkan daftar file dengan ekstensi java.<br \/>\n     *<br \/>\n     * @param DirectoryPath Path mewakili direktori yang akan dicari<br \/>\n     * @param fileNamePattern Nama file yang akan dicari [ekspresi reguler]<br \/>\n     * @param type Objek file terkait ditentukan oleh [type].<br \/>\n     * Berikut ini dapat ditentukan<br \/>\n     * TYPE_FILE_OR_DIR\u30fb\u30fb\u30fbFile dan direktori<br \/>\n     * TYPE_FILE\u30fb\u30fb\u30fbFile<br \/>\n     * TYPE_DIR\u30fb\u30fb\u30fbDirektori<br \/>\n     * @param isRecursive benar untuk mencari secara rekursif<br \/>\n     * @param period Mencari file yang tanggal pembaruannya telah melewati jumlah hari yang ditentukan.<br \/>\n     *Bisa di atur mau tidaknya<br \/>\n     * Tidak berlaku jika 0<br \/>\n     * Jika 1 atau lebih, cari file setelah jumlah hari yang ditentukan<br \/>\n     * Jika kurang dari -1, cari file yang lebih lama dari jumlah hari yang ditentukan<br \/>\n     * @return Objek file yang cocok dengan pencarian<br \/>\n     *\/<br \/>\n    File publik[] listFiles(Jalur direktori string,<br \/>\n            String fileNamePattern, tipe int,<br \/>\n            boolean isRekursif, int periode) {<\/p>\n<p>        File dir = File baru (directoryPath);<br \/>\n        jika (!dir.isDirectory()) {<br \/>\n            membuang IllegalArgumentException baru<br \/>\n            (\u201cJalur yang ditentukan dalam argumen[\u201d + dir.getAbsolutePath() +<br \/>\n                    \u201c] bukan direktori.\u201d);<br \/>\n        }<br \/>\n        File[] file = dir.listFiles();<br \/>\n        \/\/ keluarannya<br \/>\n        for (int i = 0; i &lt; panjang file; i++) {<br \/>\n            Berkas berkas = berkas[i];<br \/>\n            addFile(ketik, fileNamePattern, set, file, titik);<br \/>\n            \/\/ Cari secara rekursif dan tambahkan ke daftar secara rekursif jika itu adalah direktori<br \/>\n            if (isRekursif &amp;&amp; file.isDirectory()) {<br \/>\n                listFiles(file.getAbsolutePath(), fileNamePattern,<br \/>\n                            ketik, isRekursif, titik);<br \/>\n            }<br \/>\n        }<br \/>\n        return (File[]) set.toArray(File baru[set.size()]);<br \/>\n    }<\/p>\n<p>    private void addFile(tipe int, pencocokan string, set TreeSet,<br \/>\n            File file,int titik) {<br \/>\n        beralih (ketik) {<br \/>\n        kasus TYPE_FILE:<br \/>\n            jika (!file.isFile()) {<br \/>\n                kembali;<br \/>\n            }<br \/>\n            merusak;<br \/>\n        kasus TYPE_DIR:<br \/>\n            jika (!file.isDirectory()) {<br \/>\n                kembali;<br \/>\n            }<br \/>\n            merusak;<br \/>\n        }<br \/>\n        if (cocok != null &amp;&amp; !file.getName().matches(cocok)) {<br \/>\n            kembali;<br \/>\n        }<br \/>\n        \/\/ Jika ada spesifikasi apakah jumlah hari yang ditentukan telah berlalu<br \/>\n        jika (titik != 0) {<br \/>\n            \/\/ Tanggal pembaruan file<br \/>\n            Tanggal lastModifiedDate = Tanggal baru(file.lastModified());<br \/>\n            String lastModifiedDateStr = SimpleDateFormat baru(\u201cyyyyMMdd\u201d)<br \/>\n                    .format(lastModifiedDate);<\/p>\n<p>            \/\/ Tanggal yang ditentukan (dihitung dalam milidetik per hari)<br \/>\n            panjang satu Hari Waktu = 24L * 60L * 60L * 1000L;<br \/>\n            long periodTime = oneDayTime * Math.abs(periode);<br \/>\n            Tanggal yang ditunjukTanggal =<br \/>\n                Tanggal baru(Sistem.currentTimeMillis() \u2013 periodTime);<br \/>\n            String yang ditunjukDateStr = SimpleDateFormat baru(\u201cyyyyMMdd\u201d)<br \/>\n                    .format(Tanggal yang ditunjuk);<br \/>\n            jika (titik &gt; 0) {<br \/>\n                if (lastModifiedDateStr.compareTo(designatedDateStr) &lt; 0) {<br \/>\n                    kembali;<br \/>\n                }<br \/>\n            } kalau tidak {<br \/>\n                jika (lastModifiedDateStr.compareTo(designatedDateStr) &gt; 0) {<br \/>\n                    kembali;<br \/>\n                }<br \/>\n            }<br \/>\n        }<br \/>\n        \/\/ Simpan dalam daftar jika semua kondisi terpenuhi<br \/>\n        set.tambahkan(file);<\/p>\n<p>    }<\/p>\n<p>    \/** Gunakan TreeSet untuk mengurutkan berdasarkan abjad. *\/<br \/>\n    set TreeSet pribadi = TreeSet baru();<\/p>\n<p>    \/**<br \/>\n     * Jika Anda ingin terus menggunakan instance setelah membuatnya, gunakan metode ini.<br \/>\n     * Panggilan harus diselesaikan.<br \/>\n     * contoh)<br \/>\n     * Pencarian FileSearch = Pencarian File baru();<br \/>\n     * File[] f1 = pencarian.listFiles(C:\/filelist\/\u201d, \u201c*.java\u201d);<br \/>\n     * pencarian.hapus();<br \/>\n     * File[] f2 = pencarian.listFiles(\u201cC:\/filelist\/\u201d, \u201c*.jsp\u201d);<br \/>\n     *\/<br \/>\n    kekosongan publik jelas(){<br \/>\n    \tset.hapus();<br \/>\n    }<br \/>\n}<br \/>\n<\/textarea><\/p>\n\n<h2 class=\"common_title\"><a name=\"2\">Hasil eksekusi<\/a><\/h2>\n<p>\nUntuk memeriksa contoh program, saya membuat direktori daftar file dan menyiapkan file-file berikut.<br \/>\n<br \/>\nNama file dan tanggal pembaruan ditampilkan.<\/p>\n<p>*Harap dicatat bahwa tanggal saat ini adalah<strong>2007\/08\/18<\/strong>Misalkan saja demikian.\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>\u25c6Contoh eksekusi<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(\u201c\\n\u25cfDapatkan semua file\u201d);<br \/>\n      File[] file = pencarian.listFiles(jalur, null);<br \/>\n      printFileList(file);<br \/>\n      cari.hapus();<\/p>\n<p>      System.out.println(\u201c\\n\u25cfDapatkan file dengan ekstensi java\u201d);<br \/>\n      file = pencarian.listFiles(jalur, \u201c*.java\u201d);<br \/>\n      printFileList(file);<br \/>\n      cari.hapus();<\/p>\n<p>      System.out.println(\u201c\\n\u25cfDapatkan semua file dan direktori\u201d);<br \/>\n      file = pencarian.listFiles(jalur, null,pencarian.TYPE_FILE_OR_DIR, true, 0);<br \/>\n      printFileList(file);<br \/>\n      cari.hapus();<\/p>\n<p>      System.out.println(\u201c\\n\u25cfDapatkan file diperbarui dalam waktu 2 hari dari tanggal sekarang\u201d);<br \/>\n      file = pencarian.listFiles(jalur, null,pencarian.TYPE_FILE, true, 2);<br \/>\n      printFileList(file);<br \/>\n      cari.hapus();<\/p>\n<p>      System.out.println(\u201c\\n\u25cfDapatkan file lama yang lebih lama dari 30 hari dari tanggal sekarang\u201d);<br \/>\n      file = pencarian.listFiles(jalur, null,pencarian.TYPE_FILE, true, -30);<br \/>\n      printFileList(file);<br \/>\n      cari.hapus();<br \/>\n  }<\/p>\n<p>  private static void printFileList(File[] files) {<br \/>\n      for (int i = 0; i &lt; panjang file; i++) {<br \/>\n          Berkas berkas = berkas[i];<br \/>\n          Sistem.keluar.println((i + 1) + \u201c: \u201d + file);<br \/>\n      }<br \/>\n  }<br \/>\n<\/textarea><br \/>\n<br \/>\n\u25c6 Hasil keluaran<\/p>\n<pre class=\"console\">\u25cfDapatkan semua file 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 \u25cfDapatkan file dengan ekstensi java 1: C:\\filelist\\aaa.java 2: C:\\filelist\\bbb.java 3: C:\\filelist\\dir\\ccc .java 4: C:\\filelist\\dir\\ddd.java \u25cfDapatkan semua file dan direktori 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 \u25cfFile diperbarui dalam waktu 2 hari dari tanggal sekarang Dapatkan 1: C:\\filelist\\aaa. java 2: C:\\filelist\\bbb.java 3: C:\\filelist\\dir\\ddd.java 4: C:\\filelist\\dir\\eee.jpg \u25cfTanggal sekarang Dapatkan file lama lebih dari 30 hari dari 1: C: \\filelist\\dir\\ccc.java\r\n<\/pre>","protected":false},"excerpt":{"rendered":"<p>Java Mencari file secara rekursif dari direktori Di Java, dari direktori tertentu, termasuk subdirektori [\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\/id\/wp-json\/wp\/v2\/posts\/942"}],"collection":[{"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/comments?post=942"}],"version-history":[{"count":4,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/posts\/942\/revisions"}],"predecessor-version":[{"id":1881,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/posts\/942\/revisions\/1881"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/media?parent=942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/categories?post=942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/tags?post=942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}