2014-02-15 62 views
4

如何從圖像文件(已創建)中精確地獲取日期和時間作爲yyyyy.MMMMM.dd GGG hh:mm aaa,這是我正在使用的代碼。如何從圖像文件中讀取日期和時間

Path p = Paths.get("C:\\DowloadFolder\\2.png"); 
BasicFileAttributes view = Files.getFileAttributeView(p, BasicFileAttributeView.class).readAttributes(); 

System.out.println(view.creationTime()+" is the same as "+view.lastModifiedTime()); 

我試圖用DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");,但不知道如何從圖像文件獲取日期和時間。

+0

什麼是你的問題?如何從嵌入在圖像文件中的元數據中提取日期時間?如果是這樣,爲什麼你發佈這個代碼從文件系統獲取日期時間? –

+0

我只想得到一個創建圖像的日期時間。 –

回答

1

你的問題是混淆

你似乎在要求的日期時間創建一個文件時。但是你也可以在你的第一句話中提到一些日期格式。然後你特指圖像文件,這意味着你想要以jpeg和其他一些圖像格式嵌入元數據。

您的問題有它自己的答案

如果你想要的是一個文件的創建時間,在這個問題的示例代碼已經有一個信息,一個java.nio.file.attribute.FileTime對象。

這是我自己演示的一些示例代碼。

Path p = Paths.get("/Volumes/Macintosh HD/Users/johndoe/text.txt"); 
BasicFileAttributes view = null; 
try { 
    view = Files.getFileAttributeView(p, BasicFileAttributeView.class).readAttributes(); 
} catch (IOException ex) { 
    Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex); 
} 

// As of Java 7, the NIO package added yet another date-time class to the Java platform. 
java.nio.file.attribute.FileTime fileTimeCreation = view.creationTime(); 
java.nio.file.attribute.FileTime fileTimeLastModified = view.lastModifiedTime(); 

fileTimeCreation對象有你的文件的創建日期時間信息。請閱讀the doc關於如何使用它。

要與其他類一起使用,您可能希望轉換爲另一種類型的日期 - 時間對象。使用Joda-TimeJava 8中的新java.time.* package。避免舊的java.util.Date &日曆類與Java捆綁在一起,因爲它們非常麻煩。

不要忘了時區。通常更好地指定一個所需的時區,而不是依賴於默認值。

// Convert to Joda-Time. 
DateTimeZone timeZone = DateTimeZone.forID("Europe/Paris"); 
org.joda.time.DateTime dateTime = new DateTime(fileTimeCreation.toMillis(), timeZone); 

// Convert to java.time.* package in Java 8. 
ZoneId zoneId = ZoneId.of("Europe/Paris"); 
ZonedDateTime zonedDateTime = ZonedDateTime.parse(fileTimeCreation.toString()).withZoneSameInstant(zoneId); 

// Convert to java.util.Date 
// Caution: I do not recommend using java.util.Date & Calendar classes. But if you insist… 
java.util.Date date = new java.util.Date(fileTimeCreation.toMillis()); 

轉儲到控制檯...

System.out.println("fileTimeCreation: " + fileTimeCreation); 
System.out.println("fileTimeLastModified: " + fileTimeLastModified); 
System.out.println("Joda-Time dateTime: " + dateTime); 
System.out.println("java.time zonedDateTime: " + zonedDateTime); 
System.out.println("java.util.Date (with default time zone applied): " + date); 

當運行...

fileTimeCreation: 2014-02-16T02:28:51Z 
fileTimeLastModified: 2014-02-16T02:34:17Z 
Joda-Time dateTime: 2014-02-16T03:28:51.000+01:00 
java.time zonedDateTime: 2014-02-16T03:28:51+01:00[Europe/Paris] 
java.util.Date (with default time zone applied): Sat Feb 15 18:28:51 PST 2014 
+0

錯誤對於混淆抱歉。謝謝你的回答。我認爲我做錯了 –

1

有一個庫叫做metadata-extractor這個工作。

更多資訊可瀏覽:here。 或者this one

+0

有什麼方法不使用庫? –

+0

是的。製作你自己的圖書館。但是,你爲什麼要這樣做*? – jpaugh

+0

我已經導入jar文件,但它仍然有一個'元數據','ImageMetadataReader','目錄' –

相關問題