private ArrayList<EziInfo> indexFolder(File filesFolder, File eziFolder, ArrayList<EziInfo> eziFiles) {
        try {
            for (File file : filesFolder.listFiles()) {
                if (file.isDirectory()) {
                    eziFiles = indexFolder(file, eziFolder, eziFiles);
                } else {
                    if (!file.getName().endsWith(".ezi")) {
                        boolean existsInList = false;
                        for (EziInfo eziInfo : eziFiles) {
                            EziInfo temp = new EziInfo(file.length(), file);
                            if (eziInfo.getEziId().equals(temp.getEziId())) {
                                String originalChecksum = eziInfo.generateCheckSum();
                                String newFileChecksum = temp.generateCheckSum();
                                if (originalChecksum.equals(newFileChecksum)) {
                                    eziInfo.addFile(file);
                                    updateEziInfoFile(eziFolder, eziInfo);
                                    existsInList = true;
                                }
                                else{
                                    existsInList = false;
                                }
                                break;
                            }
                        }
                        if (!existsInList) {
                            EziInfo eziInfo = createEziInfoFile(file, eziFolder);
                            if (eziInfo != null) {
                                eziFiles.add(eziInfo);
                            }
                        }
                    }
                }
            }
        } catch (NullPointerException exc) {
            System.out.println("No such directory");
        }
        return eziFiles;
    }