系统中存在一个文件test.txt,其属性如下:
下面就给出对这个文件的创建时间 和修改时间 读取的代码。
在jdk中,File的操作并没有取得文件创建时间的方法。唯一提供提供的方法是lastModified()返回long值。牺牲创建时间的方法实在是为了满足跨平台的需要。但在windows环境中,需要取得文件创建时间的情况是存在的。
实现的办法是通过windows本地命令行来取得创建日期。以下代码主要参照http://forum.java.sun.com/thread.jspa?threadID=311281&messageID=1247450
/*
* 著作権: Copyright (c) 2006
* 会社名:
* 更新履歴:
* 2007/01/29 14:21:23 1.0.0 徐小慧 新規作成
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/**
* Fileの時間を取得用クラス
*
* @author 徐小慧
* @version 1.0.0 $Id: Timetake 12254 2007-08-16 04:35:16Z
* xuxh $
* @since R1.0.0
*/
public class Timetake {
/**
* Fileの時間
* @param _file _file
* @return datetime datetime
*/
public static String getFileCreateDate(File _file) {
File file = _file;
try {
Process ls_proc = Runtime.getRuntime().exec(
"cmd.exe /c dir " + file.getAbsolutePath() + " /tc");
BufferedReader br = new BufferedReader(new InputStreamReader(ls_proc.getInputStream()));
for (int i = 0; i < 5; i++) {
br.readLine();
}
String stuff = br.readLine();
StringTokenizer st = new StringTokenizer(stuff);
String dateC = st.nextToken();
String time = st.nextToken();
String datetime = dateC.concat(time);
br.close();
return datetime;
} catch (Exception e) {
return null;
}
}
}
//
File file = new File("C:\\xxh\\102.txt");
String time = Timetake.getFileCreateDate(file);