Java NIO对象到目前为止的转换

时间:2015-02-26 16:51:13

标签: java nio

我正在尝试获取最后一次访问权限,并在java中创建文件的日期,所以我使用的是nio,但输出是以这种格式出现的:

Last access time :: 2015-02-26T15:22:02.988862Z 
Creation time :: 2015-02-26T15:22:02.988862Z 
last modified time :: 2015-02-26T16:06:52.022666Z 

是否有将它们转换为Date或Calender对象,以便我可以获得正确的格式作为输出?

这是我的代码,

package com.home.test;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;

public class TestRun {   

    public static void main(String[] args) {

        TestRun tr = new TestRun();
        tr.run();

    }
    private void run() {

        File file = new File("D:/Test_Folder/File1.txt");
        Path filPath = file.toPath();


        BasicFileAttributes attrib = null;

        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");

            attrib = Files.readAttributes(filPath, BasicFileAttributes.class);


            System.out.println("Last access time :: "+attrib.lastAccessTime());
            System.out.println("Creation time :: "+attrib.creationTime());
            System.out.println("last modified time :: "+attrib.lastModifiedTime());


        } catch (Exception e) {

            System.out.println("Error thrown"+e.toString());
        }

    }
}

2 个答案:

答案 0 :(得分:3)

这些方法返回FileTime个值。 FileTime有一个toMillis方法,以毫秒为单位返回long的值。您可以从中创建Date对象。

答案 1 :(得分:3)

嗯,不,时间戳以FileTime对象的形式出现。您正在通过将这些对象添加到String来获取这些对象的String表示。

这些对象将相同的基础时间表示(自纪元以来的毫秒)包装为DateCalendar对象,因此,如果您愿意,是的,您可以获得其中一个。例如:

Calendar atime = Calendar.newInstance();
atime.setTimeInMillis(attrib.lastAccessTime().toMillis());

如果您希望以Date的形式提供,那么您可以继续

Date atimeAsDate = atime.getTime();