Question

Je voudrais extraire la date à laquelle un fichier jpg a été créé. Java utilise la méthode lastModified pour l'objet File, mais ne semble pas prendre en charge l'extraction de la date de création du fichier. Je crois que les informations sont stockées dans le fichier car la date que je vois lorsque je survole le pointeur de la souris sur le fichier dans Windows XP est différente de ce que je peux obtenir en utilisant JNI avec "dir / TC". sur le fichier sous DOS.

Était-ce utile?

La solution

Les informations sont stockées dans l'image dans un format appelé EXIF ?? ou texte du lien . Plusieurs bibliothèques sont capables de lire ce format, par exemple celle-ci

.

Autres conseils

La date est stockée dans les données EXIF ?? au format jpeg. Il existe une bibliothèque java et un visualiseur en java qui pourrait être utile.

J'utilise cette bibliothèque de métadonnées: http://www.drewnoakes.com/code/exif/

semble fonctionner plutôt bien, même s'il est important de noter que toutes les images JPEG ne contiennent pas cette information, elle ne peut donc pas être infaillible à 100%.

Si les métadonnées EXIF ??ne contiennent pas la date de création, vous devrez probablement vous débrouiller avec lastUpdated de Java - à moins que vous ne souhaitiez recourir à Runtime.exec (...) et à l'aide de fonctions système pour le savoir ( Je ne recommanderais pas cela, cependant!)

L'exemple de code ci-dessous demande à l'utilisateur un chemin d'accès au fichier, puis affiche la date et l'heure de création:

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();}
    }
}

Vous avez probablement besoin de quelque chose pour accéder aux données exif . Google suggère cette bibliothèque .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top