java获取文件创建时间
由于要获取照片创建的时间,也就是数字化的时间,即拍摄时间;开始通过网上搜索的获取文件时间都是本机电脑创建此文件的时间,路子不对,不符合要求;后来通过搜索获取照片拍摄时间,才拿到正确的创建时间。
数码照片有Exif 属性,可以获取拍摄时间以及光圈等信息。
获取文件创建时间
关键代码:此方法获取的都是文件创建时间,也就是文件到达电脑上的时间。
public static String getCreationTime(File file) {
BasicFileAttributes attr = null;
try {
Path path = file.toPath();
attr = Files.readAttributes(path, BasicFileAttributes.class);
} catch (IOException e) {
e.printStackTrace();
}
// 创建时间
Instant instant = attr.creationTime().toInstant();
// 更新时间
// Instant instant = attr.lastModifiedTime().toInstant();
// 上次访问时间
// Instant instant = attr.lastAccessTime().toInstant();
String format = DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneId.systemDefault()).format(instant);
return format;
}
// ======================================================================
// 另一种方法
private static Long getFileCreateTime(String filePath) {
File file = new File(filePath);
try {
Path path = Paths.get(filePath);
BasicFileAttributeView basicview = Files.getFileAttributeView(path, BasicFileAttributeView.class, LinkOption.NOFOLLOW_LINKS);
BasicFileAttributes attr = basicview.readAttributes();
Long lastModified = file.lastModified();
return attr.creationTime().toMillis();
} catch (Exception e) {
e.printStackTrace();
return file.lastModified();
}
}
获取照片创建时间
关键代码:此方法通过获取照片的Exif 属性,来获取照片的拍摄时间;
Exif 属性:拍摄完一张照片,相机会生成一个如JPEG格式的电子文件保存起来,这个jpeg图片它不只保存拍摄的画面,还保存很多其他的一些信息如:相机品牌、手机型号、闪光灯、快门速度、光圈大小、感光度及GPS坐标等,这些信息就是EXIF信息。
此Exif的属性是固定的,不会随着照片移动复制等改变,所以就算复制、移动、发送等操作,都不会改变Exif 属性。
/**
* 处理 单张 图片
*
* @return void
* @date 2015-7-25 下午7:30:47
*/
public static boolean getImageTime(File jpegFile) {
Metadata metadata;
try {
metadata = JpegMetadataReader.readMetadata(jpegFile);
Iterator<Directory> it = metadata.getDirectories().iterator();
while (it.hasNext()) {
Directory exif = it.next();
Iterator<Tag> tags = exif.getTags().iterator();
while (tags.hasNext()) {
Tag tag = (Tag) tags.next();
System.out.println(tag.toString());
}
}
} catch (JpegProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
pom 文件,依赖jar包
<!-- https://mvnrepository.com/artifact/com.drewnoakes/metadata-extractor -->
<dependency>
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.16.0</version>
</dependency>
获取属性:
参考博客: