java获取文件和照片创建时间

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>

获取属性:
java获取文件和照片创建时间

参考博客:

java 获取文件的创建时间

【Java】如何获取文件的创建时间、更新时间

什么是照片的Exif信息

java读取图片的(尺寸、拍摄日期、标记)等EXIF信息

上一篇:AttributeError: 'int' object has no attribute 'upper'


下一篇:$.each()与$(selector).each()