Obtener la extensión de un archivo en Java
yuri648
Mensajes publicados
785
Estado
Miembro
-
KX Mensajes publicados 19031 Estado Moderador -
KX Mensajes publicados 19031 Estado Moderador -
Bonjour, comment obtenir l'extension d'un fichier en Java ou bien quelle méthode peut le faire ? et merci d'avance
Configuration: Windows XP Firefox 2.0.0.20
Configuration: Windows XP Firefox 2.0.0.20
3 respuestas
-
Hello Yuri,
There is no method to do that (in general an extension is useless).
If you want to fetch the extension yourself, you need to use the split(".") method of the String class. You retrieve the last entry of the returned array and that’s it!
Best regards,
--
rtfm and jfgi
Simple "merci" makes helping people happy :) -
"ruta" puede ser solo el nombre del archivo:
String ruta = "mon/chemin/de/fichier/Fichier.toto.txt";
String ext = ruta.substring(ruta.lastIndexOf(".")); //recupera la extensión
System.out.println(ext); //-> .txt-
Atención: hay que prever el caso en que no haya extensión (no es obligatoria).
En particular, desconfiar de rutas de acceso que contengan un punto en el nombre de la carpeta o archivos ocultos bajo Linux cuyo nombre comience por un punto (pero que no sea la extensión) !
A continuación algunos ejemplos de rutas de acceso y resultado esperado
"C:\test\test.txt" o "/test/test.txt" --> "txt" "C:\test\test" o "/test/test" --> "" "C:\test.test\test" o "/test.test/test" --> "" "C:\test\.test" o "/test/.test" --> ""
-
-
Excepción en el hilo "main" java.lang.NullPointerException
en pdf.<init>(pdf.java:30)
en nn.main(nn.java:11)
voilà la clase 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="" else="" v="getExtension(lis[i]);" fichier="" lis="" i="i+1;" pile.pop="" public="" static="" string="" getextension="" f="" null="" filename="f.getName();" int="">0 && i<filename.length return="" filename.substring="" null="" et="" la="" classe="" main:="" import="" java.io.ioexception="" public="" class="" nn="" static="" void="" main="" arguments="" throws="" ioexception="" pdf="" mm="new" merci="" d="" /></lis.length></string></init>-
Hola Yuri648,
Ya que es un placer ver que después de haberte explicado que había que usar ya sea un ArrayDeque o una LinkedList para implementar pilas, uses una Stack. En fin, haz como quieras...
¿Puedes decirme en qué línea se genera esta excepción, por favor (ponmela en negrita), y vuelve a publicar tu mensaje con sangría y usando la etiqueta CODE, por favor?
Gracias,
--
rtfm y jfgi
Simple "gracias" hace que ayudar a la gente sea feliz :) -
-
-
-
Tienes una herramienta maravillosa en Eclipse: el depurador (simplemente genial).
Para descubrir de dónde proviene tu problema, coloca un punto de interrupción en esta línea: while(i<lis.length).
Luego, inicia la ejecución en modo de depuración (el escarabajo pequeño o F11), y tu programa se detendrá en cada paso por esta línea (es decir, en cada iteración del bucle), y te mostrará el estado de las variables en ese momento.
Así podrás identificar exactamente en qué momento falla tu programa (mirando el valor de i...).
Comprende bien que tengo bastantes dificultades para ayudarte porque no tengo el mismo sistema de archivos que tú (y que, de mi lado, con c:/, el programa funciona sin problema).
Atentamente,
--
rtfm and jfgi
Simple "merci" hace feliz a quien ayuda :)
-