Ich möchte das Datum eine JPG-Datei erstellt wurde. Java verfügt über die lastModified-Methode für das File-Objekt, scheint jedoch keine Unterstützung für das Extrahieren des Erstellungsdatums aus der Datei bereitzustellen. Ich glaube, dass die Information in der Datei als das Datum gespeichert wird, das ich sehe, wenn ich den Mauszeiger über die Datei in Win XP führe, ist anders als was ich bekommen kann, indem ich JNI mit "dir/TC" auf der Datei in DOS verwende.Wie bekomme ich das Datum Bild erstellt in Java
Antwort
Das Datum wird in den EXIF Daten in der JPEG gespeichert. Es gibt eine java library und eine viewer in java, die hilfreich sein könnte.
Sie benötigen wahrscheinlich etwas, um auf die exif Daten zuzugreifen. Google schlägt this library vor.
Ich benutze diese Metadaten Bibliothek: http://www.drewnoakes.com/code/exif/
scheint ziemlich gut zu funktionieren, obwohl bedenken Sie, dass nicht alle JPEG-Bilder über diese Informationen verfügen, so dass es nicht zu 100% narrensicher sein kann.
Wenn die EXIF-Metadaten das Erstellungsdatum nicht enthalten, müssen Sie sich wahrscheinlich mit dem lastUpdated von Java behelfen - es sei denn, Sie möchten auf Runtime.exec (...) zurückgreifen und Systemfunktionen verwenden, um das herauszufinden (Ich würde dies jedoch nicht empfehlen!)
Ja, es funktionierte für einige meine Bilder und funktionierte nicht für Bilddaten in unserer Datenbank gespeichert. –
Das folgende Codebeispiel den Benutzer für einen Dateipfad fragt und gibt dann das Erstellungsdatum und -uhrzeit:
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();}
}
}
Danke für das Code-Snippet, aber ich muss tatsächlich das Datum aus den Bild-Metadaten erhalten nicht aus dem Dateisystem. – user16029
Dies funktioniert nur für Windows – ScrappyDev
Großartig! Danke für alle hilfreichen Kommentare! Ich glaube, dass ich die Bibliothek bei drewnoakes.com benutzen werde. – user16029
Austauschbare Bilddateiformat (offiziell Exif, ** nicht EXIF ** nach JEIDA/JEITA/CIPA-Spezifikationen) ist ein Standard, der ... –