Java如何获取文件的创建时间

 我来答
小煜°寜2
2013-10-23 · TA获得超过138个赞
知道答主
回答量:186
采纳率:0%
帮助的人:150万
展开全部
能不能换个思路~~~汗啊~!好像用java的函数只能取得lastModified()有一个比较笨的方法
Process p=Runtime.getRuntime().exec("dir startup.bat /t -c");
然后取得p的输出信息就可以得到创建时间了!上面的例子我是得到tomcat的startup.bat这个文件的创建时间,如果你想得到其它文件的创建时间就可以将startup.bat换成其它文件名!study and mark ^_^如果用dir, 取得创建时间的参数是/TC路过学习ing帮您顶java是用native来获取操作系统的支持,从而对文件进行操作。
具体实现类是
java.io.FileSystem
这个类是私有的只能在jdk内部使用,由于这个类没有提供文件时间创建的接口,你也就没有办法用纯java来获得这一个功能(但愿不是这样)。
有一个简单的方法是自己调用系统函数,或者干脆调用各C函数
先写各本地类访问方法
class MyFileSystem{
public native void getCreatFileTime(File f);static {System.loadLibrary(" ");}
public static void main(String[] args) {
new HelloWorld().getCreatFileTime();}}编译本文件然后执行 javah,便会自动产生头文件 MyFileSystem.h
函数的具体实现如下:
#include
#include "MyFileSystem.h"
#include
JNIEXPORT double JNICALL
Java_MyFileSystem_displayHelloWorld(JNIEnv *env, jobject obj){//在这里调用C函数
double time=getFileCreatTime_IN_C(obj)
return time;}高手如云,我心忐忑
奋发图强~高手如云,我心忐忑奋发图强~me too,高手如云,我心忐忑奋发图强~me too,too还有可以复制java.io.FileSystem及相关类的源代码,把所有东西成public的,这样总可以用了吧,
当然把类名也改掉。。。。。顶!
Study!Up!!!顶一下!
支持upFile f = new File("d:\\a.txt");
Date date = new Date();
long L = date.getTime();
f.setLastModified(L);
以上个函数可以设置文件的最后修改时间,以及设置文件为“只读”属性顶!!!
zhenghanxi
2008-05-21 · TA获得超过422个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:258万
展开全部
Set fs = CreateObject("Scripting.FileSystemObject") '创建FileSystemObject 对象
Set f = fs.GetFile("C:\123.exe ") '返回指定路径文件所对应的 File 对象
'File 对象的 DateCreated 属性返回该文件夹的创建日期和时间
'File 对象的 DateLastModified 属性返回最后一次修改该文件的日期和时间
'File 对象的 DateLastAccessed 属性返回最后一次访问该文件的日期和时间
MsgBox "创建时间:" & f.DateCreated & vbCrLf & "修改时间:" & f.DateLastModified & vbCrLf & "访问时间:" & f.DateLastAccessed, vbInformation, f.Name & "属性"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友090def6
2014-04-21 · TA获得超过2211个赞
知道小有建树答主
回答量:558
采纳率:100%
帮助的人:712万
展开全部

Java只能读取到文件的最后修改时间,不能获取创建时间,

创建时间是利用了cmd命令获取的:

public class FileTest {
 
 public static void main(String[] args) {
  getCreateTime("d:\\test-1.txt");
  getModifiedTime("d:\\test-1.txt");
 }
 
 public static void getCreateTime(String filePath) {
  String strTime = null;
  try {
   Process p = Runtime.getRuntime().exec("cmd /C dir " + filePath + "/tc");
   InputStream is = p.getInputStream();
   BufferedReader br = new BufferedReader(new InputStreamReader(is));
   String line;
   while ((line = br.readLine()) != null) {
    if (line.endsWith(".txt")) {
     strTime = line.substring(0, 17);
     break;
    }
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
  System.out.println("创建时间    " + strTime);
 }
 public static void getModifiedTime(String filePath) {
  long time = new File(filePath).lastModified();
  String ctime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date(time));
  System.out.println("修改时间[1] " + ctime);
 }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
似水流年00
2006-08-24 · TA获得超过2073个赞
知道小有建树答主
回答量:956
采纳率:0%
帮助的人:1367万
展开全部
char buf[65];
struct stat;
stat("c:\\test.txt", &sb);
sb.st_ctime 就是文件的创建时间。你可以用localtime()
转换成立能够识别的时间。
struct tm* t=localtime(sb.st_ctime);
sprintf(buf, "%04d-%02d-%02d %02d:%02d:%02d",
t->tm_year+1900, t->tm_mon+1, t->tm_mday,
t->tm_hour, t->tm_min, t->tm_sec);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9308069
2014-04-21 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1930万
展开全部

文件创建时间在Java 7/JDK 1.7之后才支持。早期Java 6 和部分linux只支持文件的“最后修改时间”。  很多环境下两个时间相同。

FileTime t=Files.readAttributes(Paths.get("c:\\dir\\file.txt"), BasicFileAttributes.class).creationTime();
System.out.println(t);

;

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(10)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式