Obtener la extensión de un archivo en Java

yuri648 Mensajes publicados 785 Estado Miembro -  
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

3 respuestas

  1. Marco la baraque Mensajes publicados 1030 Estado Colaborador 329
     
    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 :)
    1
    1. yuri648 Mensajes publicados 785 Estado Miembro 7
       
      Muchas gracias
      0
  2. landry36 Mensajes publicados 8 Estado Miembro 1
     
    "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
    1
    1. KX Mensajes publicados 19031 Estado Moderador 3 020
       
      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" --> ""
      0
  3. yuri648 Mensajes publicados 785 Estado Miembro 7
     
    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>
    0
    1. Marco la baraque Mensajes publicados 1030 Estado Colaborador 329
       
      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 :)
      0
    2. yuri648 Mensajes publicados 785 Estado Miembro 7
       
      Gracias por responderme. El error viene de esa instrucción
      while(i<lis.length)

      y si cambio la variable dd="c:/exe" no hay problema, pero si dd="c:/" sí aparece ese error.
      0
    3. Marco la baraque Mensajes publicados 1030 Estado Colaborador 329
       
      ¿Desarrollas con Eclipse? ¿Existe realmente tu directorio d:/? Verifica el valor de lis después de lis = g.listFiles(); Atentamente, -- rtfm y jfgi Simple "gracias" hace que ayudar a las personas sea feliz :)
      0
    4. yuri648 Mensajes publicados 785 Estado Miembro 7
       
      sí, desarrollo con Eclipse, el directorio existe y he verificado, lee archivos
      0
    5. Marco la baraque Mensajes publicados 1030 Estado Colaborador 329
       
      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 :)
      0