在1.6以前,可以使用File類別來取得最近的修改日期:
String strPath = "D:/_javakid/test.txt"; File file = new File(strPath); Calendar c = Calendar.getInstance(); c.setTimeInMillis(file.lastModified()); System.out.println(strPath + " 上次修改時間為:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime()));但使用
File
類別只能得到檔案的最近修改時間,若要取得像上列的檔案內容中的修改日期以及存取日期的話,就要用到NIO中java.nio.file套件下的Files、Path、Paths這三個類別:
System.out.println("使用nio..."); Path path = Paths.get(strPath); BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class); c.setTimeInMillis(attrs.creationTime().toMillis()); System.out.println(strPath + " 建立時間為:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime())); c.setTimeInMillis(attrs.lastModifiedTime().toMillis()); System.out.println(strPath + " 上次修改時間為:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime())); c.setTimeInMillis(attrs.lastAccessTime().toMillis()); System.out.println(strPath + " 上次存取時間為:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime()));使用上要注意的是,上列三個類別都是在JDK 1.7之後才存在的,要使用這些類別,要先把電腦的JDK升級到1.7以上。
完整程式碼如下:
package idv.jk.io; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.BasicFileAttributes; import java.text.SimpleDateFormat; import java.util.Calendar; public class FileModificationReader { public static void main(String[] args) throws IOException { String strPath = "D:/_javakid/test.txt"; File file = new File(strPath); Calendar c = Calendar.getInstance(); c.setTimeInMillis(file.lastModified()); System.out.println(strPath + " 上次修改時間為:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime())); System.out.println("使用nio..."); Path path = Paths.get(strPath); BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class); c.setTimeInMillis(attrs.creationTime().toMillis()); System.out.println(strPath + " 建立時間為:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime())); c.setTimeInMillis(attrs.lastModifiedTime().toMillis()); System.out.println(strPath + " 上次修改時間為:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime())); c.setTimeInMillis(attrs.lastAccessTime().toMillis()); System.out.println(strPath + " 上次存取時間為:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime())); } }執行結果為:
D:/_javakid/test.txt 上次修改時間為:2015-01-07 18:27:39 使用nio... D:/_javakid/test.txt 建立時間為:2015-01-05 15:12:59 D:/_javakid/test.txt 上次修改時間為:2015-01-07 18:27:39 D:/_javakid/test.txt 上次存取時間為:2015-01-07 18:27:12
沒有留言:
張貼留言