iamaamir

Getting Sub-folders

Jun 5th, 2015
379
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.io.File;
  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.Collections;
  5. import java.util.List;
  6.  
  7. /**
  8.  *
  9.  * @author Aamir khan
  10.  */
  11. public class EbookShop {
  12.  
  13.     private static  List<File> FinalData;
  14.     public List<File> allFilesAndFolders, SubFolders;
  15.     private final File ROOT = new File("PATH TO THE ROOT FOLDER");
  16.  
  17.  
  18.     public EbookShop() {
  19.         EbookShop.FinalData = new ArrayList();
  20.         this.allFilesAndFolders = new ArrayList();
  21.         this.SubFolders = new ArrayList();
  22.     }
  23.  
  24.     //Fire Up
  25.     public void Fire() {
  26.  
  27.         //get All Files and Folders
  28.         allFilesAndFolders.addAll(Arrays.asList(ROOT.listFiles()));
  29.         //Extract Folders
  30.         allFilesAndFolders.iterator().forEachRemaining(x -> {
  31.             try {
  32.                 if (x.isDirectory()) {
  33.                     SearchFiles(x);
  34.                     if (hasSubFolders(x)) {
  35.                         getSubFolders(x);
  36.                     }
  37.                    
  38.                 }else{
  39.                 //Take the Files out
  40.                 CheckAndAdd(x);
  41.                 }
  42.                
  43.             } catch (Exception e) {
  44.                 e.printStackTrace();
  45.             }
  46.         });
  47.         //Get Files From SubFolders
  48.         SubFolders.iterator().forEachRemaining(y -> SearchFiles(y));
  49.        
  50.     }
  51.  
  52.  
  53.     public final File[] listFolders(File path) {
  54.         File[] listFiles = null;
  55.         try {
  56.             //list the Folders only those have Folders/Files inside
  57.             listFiles = path.listFiles((File pathname)
  58.                     -> {
  59.                         return pathname.isDirectory()//make sure its Directory
  60.                         && !(pathname.isHidden())//Do not include any hidden File/Folder
  61.                         //Make Sure its not Empty
  62.                         && pathname.getAbsoluteFile().listFiles(
  63.                                 (File pathname1) -> pathname1.isDirectory() || pathname1.isFile()).length != 0;
  64.                     }
  65.             );
  66.  
  67.         } catch (Exception e) {
  68.             e.printStackTrace();
  69.         }
  70.         return listFiles;
  71.     }
  72.  
  73.     public final void SearchFiles(File folder) {
  74.         if (folder.isDirectory()) {
  75.             File[] listFiles = folder.listFiles(path -> CheckForExtension(path));
  76.             for (File temp : listFiles) {
  77.                 CheckAndAdd(temp);
  78.             }
  79.         }
  80.  
  81.     }
  82.  
  83.     private boolean CheckAndAdd(File folder) {
  84.         boolean flag = false;
  85.         if (CheckForExtension(folder)) {
  86.             flag = FinalData.add(folder);
  87.  
  88.         }
  89.  
  90.         return flag;
  91.     }
  92.  
  93.     private boolean CheckForExtension(File file) {
  94.         return (file.getName().toLowerCase().endsWith(".pdf"));
  95. //                || file.getName().toLowerCase().endsWith(".7z")
  96. //                || file.getName().toLowerCase().endsWith(".zip")
  97. //                || file.getName().toLowerCase().endsWith(".rar"));
  98.     }
  99.  
  100.     private boolean hasSubFolders(File x) {
  101.         File[] listFolders = listFolders(x);
  102.         return (listFolders.length != 0);
  103.     }
  104.  
  105.     private void getSubFolders(File x) {
  106.         File[] listFolders = listFolders(x);
  107.         SubFolders.addAll(Arrays.asList(listFolders));
  108.     }
  109.     public static void main(String[] args)throws java.io.IOException {
  110.         new EbookShop().Fire();
  111.         //get the Final Result
  112.         System.out.println("Total Files Found "+FinalData.size());
  113.         //Length Base Sort
  114.         Collections.sort(FinalData, ( a,  b) -> Integer.compare(a.getAbsolutePath().length(), b.getAbsolutePath().length()));
  115.         //print Files
  116.         FinalData.iterator().forEachRemaining(System.out::println);
  117.     }
  118.  
  119. }
Advertisement
Add Comment
Please, Sign In to add comment