Pregunta

Me gustaría extraer la fecha en que se creó un archivo jpg.Java tiene el método lastModified para el objeto Archivo, pero parece no brindar soporte para extraer la fecha de creación del archivo.Creo que la información se almacena dentro del archivo ya que la fecha que veo cuando paso el puntero del mouse sobre el archivo en Win XP es diferente a la que puedo obtener usando JNI con "dir /TC" en el archivo en DOS.

¿Fue útil?

Solución

La información se almacena dentro de la imagen en un formato llamado EXIF o Texto del enlace.Existen varias bibliotecas capaces de leer este formato, como Éste

Otros consejos

La fecha se almacena en el EXIF datos en formato jpeg.Hay una biblioteca java y un visor en java eso podría ser útil.

Yo uso esta biblioteca de metadatos: http://www.drewnoakes.com/code/exif/

Parece funcionar bastante bien, aunque ten en cuenta que no todas las imágenes JPEG tienen esta información, por lo que no puede ser 100% infalible.

Si los metadatos EXIF ​​no contienen la fecha de creación, entonces probablemente tendrá que conformarse con la última actualización de Java, a menos que desee recurrir a Runtime.exec(...) y usar funciones del sistema para averiguarlo (yo no ¡Aunque no recomiendo esto!)

El siguiente ejemplo de código solicita al usuario una ruta de archivo y luego genera la fecha y hora de creación:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(final String[] args) {
        try {
            // get runtime environment and execute child process
            Runtime systemShell = Runtime.getRuntime();
            BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Enter filename: ");
            String fname=(String)br1.readLine();
            Process output = systemShell.exec("cmd /c dir /a "+fname);
             // open reader to get output from process
            BufferedReader br = new BufferedReader (new InputStreamReader(output.getInputStream()));

            String out="";
            String line = null;

            int step=1;
             while((line = br.readLine()) != null ) 
              {
                 if(step==6)
                {
                out=line;
                }
                 step++;
                 }          // display process output

            try{
            out=out.replaceAll(" ","");
            System.out.println("CreationDate: "+out.substring(0,10));
            System.out.println("CreationTime: "+out.substring(10,15));
            }
            catch(StringIndexOutOfBoundsException se)
            {
                System.out.println("File not found");
            }
            }
          catch (IOException ioe){ System.err.println(ioe); }
          catch (Throwable t) { t.printStackTrace();}
    }
}

Probablemente necesite algo para acceder al exif datos.Google sugiere esta biblioteca.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top