Obtenir l'extension d'un fichier en java

yuri648 Messages postés 785 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
comment obtenir l'extenssion d'un fichier en java ou bien kel methode qui peut faire sa?

et merci d'avence

3 réponses

Marco la baraque Messages postés 1030 Statut Contributeur 329
 
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
yuri648 Messages postés 785 Statut Membre 7
 
merci bcp
0
landry36 Messages postés 8 Statut Membre 1
 
"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
KX Messages postés 19031 Statut Modérateur 3 020
 
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
yuri648 Messages postés 785 Statut Membre 7
 
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
Marco la baraque Messages postés 1030 Statut Contributeur 329
 
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
yuri648 Messages postés 785 Statut Membre 7
 
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
Marco la baraque Messages postés 1030 Statut Contributeur 329
 
Tu développes avec Eclipse?

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

Cordialement,
0
yuri648 Messages postés 785 Statut Membre 7
 
oui je develope avec eclipse le repertoire existe et j'ai verifié lis a des fichier
0
Marco la baraque Messages postés 1030 Statut Contributeur 329
 
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