Obtenir l'extension d'un fichier en java

Bonjour,
comment obtenir l'extenssion d'un fichier en java ou bien kel methode qui peut faire sa?

et merci d'avence
Configuration: Windows XP
Firefox 2.0.0.20

3 réponses

  1. Contributeur
    Hello Yuri,
    Il n'y a pas de méthode pour faire cela (en général ça ne sert à rien une extension).

    Si tu veux récupérer toi même l'extension, il te faut utiliser la méthode split(".") de la classe String. Tu récupère la dernière entrée du tableau retourné et le tour est joué !

    Cordialement,
    1
    1. merci bcp
      0
  2. "chemin" peut être juste le nom du fichier :

    String chemin = "mon/chemin/de/fichier/Fichier.toto.txt";
    String ext = chemin.substring(chemin.lastIndexOf(".")); //récupère l'extention
    System.out.println(ext); //-> .txt
    1
    1. Modérateur
      Attention : il faut prévoir le cas où il n'y a pas d'extension (celle-ci n'est pas obligatoire).
      En particulier se méfier de chemins d'accès contenant un point dans le nom du dossier ou des fichiers cachés sous Linux dont le nom commencent par un point (mais qui n'est pas l'extension !)

      Voici quelques exemples de chemin d'accès et de résultat attendu

      "C:\test\test.txt"  ou  "/test/test.txt"  --> "txt"
      
      "C:\test\test"      ou  "/test/test"      --> ""
      
      "C:\test.test\test" ou  "/test.test/test" --> ""
      
      "C:\test\.test"     ou  "/test/.test"     --> ""
      0
  3. j'ai un autre pb si tu peux m'aider STP j'ai cet erreur:

    Exception in thread "main" java.lang.NullPointerException
    at pdf.<init>(pdf.java:30)
    at nn.main(nn.java:11)


    voila la classe pdf:

    import java.io.File;
    import java.util.Stack;

    public class pdf {
    public pdf()
    {
    Stack<String> pile=new Stack();
    String dd="d:/";
    String v;
    int i;
    boolean bol=false;
    String h="pdf";
    File[] lis=null;
    i=0;

    while(bol==false)
    {
    // dd=(String) pile.pop();
    File g=new File(dd);

    lis=g.listFiles();

    i=0;

    while(i<lis.length )
    {
    if(lis[i].isDirectory()==true){pile.push(lis[i].getPath()); }

    else {
    v=getExtension(lis[i]);
    if(h.equals(v)){System.out.println("le fichier"+ lis[i]);}

    }
    i=i+1;
    }

    if(!pile.isEmpty()) {dd=(String) pile.pop(); }
    else{bol=true;}
    }

    }

    public static String getExtension(File f) {
    if(f != null) {
    String filename = f.getName();
    int i = filename.lastIndexOf('.');
    if(i>0 && i<filename.length()-1) {
    return filename.substring(i+1).toLowerCase();
    }
    }
    return null;
    }

    }
    et la classe main:


    import java.io.IOException;

    public class nn {

    public static void main (String arguments[]) throws IOException
    {

    pdf mm=new pdf();

    }
    }
    et merci d'avence.
    0
    1. Contributeur
      Bonjour Yuri648,
      Déjà, ça fait plaisir de voir qu'après t'avoir expliqué qu'il fallait utiliser soit une ArrayDeque, soit une LinkedList pour implémenter les piles, tu utilises une Stack. Enfin bref, fais comme tu veux...

      Tu peux me dire à quelle ligne cette exception est levée stp (me la mettre en gras), et reposter ton message avec de l'indentation et en utilisant la balise CODE stp ?

      Merci,
      0
    2. merci de m'avoir repondu l'erreur vien de cette instruction
      while(i<lis.length)

      et si je change la variable dd="c:/exe" ya pa de pb mé si dd="c:/" ya cet erreur
      0
    3. Contributeur
      Tu développes avec Eclipse?

      Ton répertoire d:/ existe bien?
      Vérifie la valeur de lis après lis = g.listFiles();

      Cordialement,
      0
    4. oui je develope avec eclipse le repertoire existe et j'ai verifié lis a des fichier
      0
    5. Contributeur
      Tu as un outil merveilleux dans Eclipse : le débogueur (il est tout simplement génial).
      Pour déceler d'où vient ton problème, tu mets un breakpoint sur cette ligne : while(i<lis.length) .

      Ensuite, tu lances l'exécution en mode debug (le petit scarabée ou F11), et ton programme va s'arrêter à chaque passage à cette ligne (donc à chaque tour de boucle), et t'indiquer l'état des variables à ce moment là.

      Tu vas donc pouvoir trouver à quel moment exactement ton programme plante (en regardant la valeur de i...).

      Comprends bien que j'ai assez de difficultés pour t'aider car je n'ai pas le même système de fichiers que toi (et que de mon côté, avec c:/, le programme tourne sans problème).

      Cordialement,
      0