Bonjour à tous,

Aujourd’hui je vais vous partager mon deuxième fichier « util« , qui me sert a récupérer certains fichier dans ma carte sd.

C’est d’une simplicité enfantine, on donne le nom d’un dossier, ou le nom d’un fichier en paramètre et il nous renvoie soit le fichier, soit null.

import java.io.File;
import java.io.IOException;
import android.os.Environment;

/**
 * Class utilitaire pour chercher un fichier avec son nom. Try catch si
 * nullpointer = pas trouve de fichier
 * 
 * @author Laurent
 * 
 */
public class FileSearch {

    /**
     * Methode qui va rechercher dans la sdcard le fichier avec le nom.
     * 
     * @param fileName le nom du fichier
     * @return le fichier en lui meme
     */
    public static File chercherFichier(String fileName) throws NullPointerException {
        File root = Environment.getExternalStorageDirectory();
        File out = null;
        out = chercherFichierRec(root, fileName);
        return out;
    }

    private static File chercherFichierRec(File dossier, String fileName) throws NullPointerException {
        File out = null;
        File[] contenuDossier;
        contenuDossier = dossier.listFiles();
        for (File f : contenuDossier) {
            if (f.isFile() && f.getName().equals(fileName))
                /** Log.d("fichier ? ", f.getPath()); */
                return f;
        }

        for (File f : contenuDossier) {
            if (f.isDirectory()) {
                out = chercherFichierRec(f, fileName);
                if (out != null) {
                    return out;
                }
            }
        }
        return out;
    }

    /***
     * cherche le dossier par le nom
     * 
     * @param fileName
     * @return
     */
    public static File chercherDossier(String fileName) throws NullPointerException {
        File root = Environment.getExternalStorageDirectory();
        File out = null;
        out = chercherDossierRec(root, fileName);
        return out;
    }

    private static File chercherDossierRec(File dossier, String fileName) throws NullPointerException {
        File out = null;
        File[] contenuDossier;
        contenuDossier = dossier.listFiles();
        for (File f : contenuDossier) {
            /** Log.d("dossier ? ", f.getPath()); */
            if (f.isDirectory() && f.getName().equals(fileName))
                return f;
        }

        for (File f : contenuDossier) {
            if (f.isDirectory()) {
                out = chercherDossierRec(f, fileName);
                if (out != null) {
                    return out;
                }
            }
        }
       return out;
   }

   /**
    * supprime tous les fichiers et dossier dans ce dossier.
    * supprime le dossier en tant que tel, si true.
    * @param root
    * @throws IOException 
    */
   public static void deleteAllFileFolder(File root, boolean delete) throws IOException {
      for (String path : root.list()) {
          File temp = new File(root.getPath() + File.separator + path);
          if (temp.isFile()) {
              temp.getCanonicalFile().delete();
          } else if (temp.isDirectory()) {
              if (temp.list().length == 0) {
                  temp.getCanonicalFile().delete();
              } else {
                  deleteAllFileFolder(temp, true);
                  temp.getCanonicalFile().delete();
              }
          }
      }
      if (delete) {
          root.getCanonicalFile().delete();
      }
   }
}

Et la dernière méthode supprime totalement un dossier avec ses dossiers enfants et fichiers enfants. (Cela m’aide pour mes tests quand j’ai la flemme de supprimer non-stop les fichiers que j’ai créé) Sur ce les amis, je vous souhaite une bonne semaine, à bientôt !