Obtenir l'extension d'un fichier en java

Fermé
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 - 6 janv. 2009 à 19:00
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 1 juil. 2013 à 10:57
Bonjour,
comment obtenir l'extenssion d'un fichier en java ou bien kel methode qui peut faire sa?

et merci d'avence
A voir également:

3 réponses

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
6 janv. 2009 à 19:42
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 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
7 janv. 2009 à 10:38
merci bcp
0
landry36 Messages postés 5 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 1 juillet 2013 1
1 juil. 2013 à 09:35
"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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
1 juil. 2013 à 10:57
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 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
7 janv. 2009 à 10:40
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 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
7 janv. 2009 à 11:15
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 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
7 janv. 2009 à 11:19
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 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
7 janv. 2009 à 11:37
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 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
7 janv. 2009 à 11:39
oui je develope avec eclipse le repertoire existe et j'ai verifié lis a des fichier
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
7 janv. 2009 à 11:51
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