Domanda

Vorrei estrarre la data di creazione di un file jpg.Java dispone del metodo lastModified per l'oggetto File, ma sembra non fornire alcun supporto per l'estrazione della data di creazione dal file.Credo che le informazioni siano archiviate nel file poiché la data che vedo quando passo il puntatore del mouse sul file in Win XP è diversa da quella che posso ottenere utilizzando JNI con "dir /TC" sul file in DOS.

È stato utile?

Soluzione

Le informazioni vengono archiviate all'interno dell'immagine in un formato chiamato EXIF O testo del collegamento.Esistono diverse librerie in grado di leggere questo formato, ad esempio Questo

Altri suggerimenti

La data è memorizzata nel file EXIF dati nel jpeg.C'è un libreria Java e un visualizzatore in Java potrebbe essere utile.

Utilizzo questa libreria di metadati: http://www.drewnoakes.com/code/exif/

Sembra funzionare abbastanza bene, anche se tieni presente che non tutte le immagini JPEG hanno queste informazioni, quindi non può essere infallibile al 100%.

Se i metadati EXIF ​​non contengono la data di creazione, probabilmente dovrai accontentarti di lastUpdated di Java, a meno che tu non voglia ricorrere a Runtime.exec(...) e utilizzare le funzioni di sistema per scoprirlo (non lo farei Non lo consiglio, però!)

L'esempio di codice seguente chiede all'utente un percorso file e quindi restituisce la data e l'ora di creazione:

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

Probabilmente hai bisogno di qualcosa per accedere a exif dati.Google suggerisce questa biblioteca.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top