package org.jlab.hipo.utils;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class FileUtils {
    
    public static List  getFileListInDir(String directory, String ext){
        List files = FileUtils.getFileListInDir(directory);
        List accepted = new ArrayList();
        for(String file : files){
            if(file.endsWith(ext)==true) accepted.add(file);
        }
        return accepted;
    }
    
    public static List  readFile(String filename){
        List items = new ArrayList();
        try {
            File file = new File(filename);
            Scanner scanner = new Scanner(file);
            while (scanner.hasNext()) {
                //System.out.println(scanner.next());
                items.add(scanner.next());
            }
            scanner.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return items;
    }
    
    public static String getEnvironmentPath(String env, String dir){
        String envDir = System.getenv(env);
        String proDir = System.getProperty(env);
        if(proDir!=null){
            StringBuilder str = new StringBuilder();
            str.append(proDir);
            if(proDir.endsWith("/")==false) str.append("/");
            str.append(dir);
            String fullPath = str.toString();
            File dirFile = new File(fullPath);
            if(dirFile.exists()==false){
                System.out.println("[FileUtils] ---> directory does not exist : " + fullPath);
                return null;
            }
            return str.toString();
        }
        
        if(envDir!=null){
            StringBuilder str = new StringBuilder();
            str.append(envDir);
            if(envDir.endsWith("/")==false) str.append("/");
            str.append(dir);
            String fullPath = str.toString();
            File dirFile = new File(fullPath);
            if(dirFile.exists()==false){
                System.out.println("[FileUtils] ---> directory does not exist : " + fullPath);
                return null;
            }
            return str.toString();
        }
        System.out.println("[FileUtils] ----> error : Environment variable " + env + " is not set");
        return null;
    }
    
    public static List  getFileListInDir(String env, String directory, String ext){
        String envDirectory = FileUtils.getEnvironmentPath(env, directory);
        if(envDirectory==null){
            return new ArrayList();
        }
        return FileUtils.getFileListInDir(envDirectory, ext);
    }
    
   public static List  getFileListInDir(String directory){        
       
       System.out.println(">>> scanning directory : " + directory);
        List fileList = new ArrayList();
        File[] files = new File(directory).listFiles();
        if(files==null){
            System.out.println(">>> scanning directory : directory does not exist");
            return fileList;
        }
        //System.out.println("FILE LIST LENGTH = " + files.length);
        for (File file : files) {
            if (file.isFile()) {
                if(file.getName().startsWith(".")==true||
                        file.getName().endsWith("~")){
                    System.out.println("[FileUtils] ----> skipping file : " + file.getName());
                } else {
                    fileList.add(file.getAbsolutePath());
                }
            }
        }
        return fileList;
    }

    
    
    public static ArrayList filesInFolder(File folder, String ext)
    {
        ArrayList file_list = new ArrayList();
        for (File f : folder.listFiles())
        {
            if (f.isDirectory())
            {
                file_list.addAll(FileUtils.filesInFolder(f, ext));
            }
            else
            {
                String[] file_split = f.getName().split("[.]+");
                String file_ext = file_split[file_split.length - 1];
                if (file_ext.equalsIgnoreCase(ext))
                {
                    file_list.add(f.getAbsolutePath());
                }
            }
        }
        return file_list;
    }
    
    public static ArrayList filesInFolder(File folder, String ext, ArrayList ignore_prefixes)
    {
        ArrayList file_list = new ArrayList();
        for (File f : folder.listFiles())
        {
            if (f.isDirectory())
            {
                file_list.addAll(FileUtils.filesInFolder(f, ext));
            }
            else
            {
                String[] file_split = f.getName().split("[.]+");
                String file_ext = file_split[file_split.length - 1];
                if (file_ext.equalsIgnoreCase(ext))
                {
                	boolean ignore = false;
                	for (String p : ignore_prefixes)
                	{
                		if (f.getName().startsWith(p))
                		{
                			ignore = true;
                			break;
                		}
                	}
                	if (!ignore)
                	{
                		file_list.add(f.getAbsolutePath());
                	}
                }
            }
        }
        return file_list;
    }
}

 

Ads help maintain this website.