Java中如何获取文件创建时间
2013-03-25 00:23
459 查看
Java中如何获取文件创建时间?有没有搞错!
直觉上本人以为java.io.File已经直接提供了获取文件创建时间的方法,悲剧的是,UNIX和Linux平台压根就没有文件创建时间的概念,因此,Java作为一门具备跨平台特性的语言,在API中提供获取文件创建时间的方法是不合适的。当然,任何平台都有文件最后修改时间的概念,java.io.File.lastModified()便是获取文件最后修改时间的方法。
那么,java中如何获取文件创建时间呢?方式不外乎两种:
1 强大的JNI,windows自己当然清楚如何获取文件创建时间了,用微软自己的C系列搞个dll吧。
2 不那么强大的Runtime,扔下C++那么久了,我才不要再搞什么dll,太烦了,直接用Runtime应付得了。
直接上代码:
至于返回的时间字符串,仅精确到秒;时间格式是否与系统环境相关,需进一步确认。
直觉上本人以为java.io.File已经直接提供了获取文件创建时间的方法,悲剧的是,UNIX和Linux平台压根就没有文件创建时间的概念,因此,Java作为一门具备跨平台特性的语言,在API中提供获取文件创建时间的方法是不合适的。当然,任何平台都有文件最后修改时间的概念,java.io.File.lastModified()便是获取文件最后修改时间的方法。
那么,java中如何获取文件创建时间呢?方式不外乎两种:
1 强大的JNI,windows自己当然清楚如何获取文件创建时间了,用微软自己的C系列搞个dll吧。
2 不那么强大的Runtime,扔下C++那么久了,我才不要再搞什么dll,太烦了,直接用Runtime应付得了。
直接上代码:
package com.dancen.test; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; /** * Runtime获取文件创建时间示例 * * @author Dancen * */ public class FileCreatedDemo { public static void main(String[] args) { try { String fileCreated = getFileCreated("D:\\xiyou.jpg"); System.out.println(fileCreated); } catch(Exception e) { e.printStackTrace(); } } public static String getFileCreated(String path) { if(null == path) { return null; } return getFileCreated(new File(path)); } public static String getFileCreated(final File file) { if(null == file) { return null; } String rs = null; final StringBuilder sb = new StringBuilder(); Process p = null; try { p = Runtime.getRuntime().exec(String.format("cmd /C dir %s /tc", file.getAbsolutePath())); } catch(IOException e) { return rs; } final InputStream is = p.getInputStream(); final InputStreamReader ir = new InputStreamReader(is); final BufferedReader br = new BufferedReader(ir); Runnable runnable = new Runnable() { @Override public void run() { String data = null; try { while(null != (data = br.readLine())) { if(-1 != data.toLowerCase().indexOf(file.getName().toLowerCase())) { String[] temp = data.split(" +"); if(2 <= temp.length) { String time = String.format("%s %s", temp[0], temp[1]); sb.append(time); } break; } } } catch(IOException e) { e.printStackTrace(); } finally { try { if(null != br) { br.close(); } if(null != ir) { ir.close(); } if(null != is) { is.close(); } } catch(IOException e) { e.printStackTrace(); } } } }; Thread thread = new Thread(runnable); thread.start(); try { thread.join(); } catch(InterruptedException e) { e.printStackTrace(); } if(0 != sb.length()) { rs = sb.toString(); } return rs; } }
至于返回的时间字符串,仅精确到秒;时间格式是否与系统环境相关,需进一步确认。
相关文章推荐
- java获取文件创建和修改时间
- Java 获取文件创建时间
- 牛客网Java刷题知识点之File对象常用功能:获取文件名称、获取文件路径、获取文件大小、获取文件修改时间、创建与删除、判断、重命名、查看系统根目录、容量获取、获取某个目录下内容、过滤器
- C++ 如何获取目录下面的文件/文件的创建时间
- 如何获取到文件的创建时间,修改时间等参数
- C++ 如何获取目录下面的文件/文件的创建时间
- 直接由Java获取文件的创建时间
- java获取文件的创建时间、修改时间和访问时间(含优化)
- java获取文件创建时间
- Java中如何得到文件的创建时间&最后修改时间
- C# 如何获取某文件夹的文件列表,并按文件的创建时间排序?
- Java 获取文件创建时间2
- C++ 如何获取目录下面的文件/文件的创建时间
- Java 通过 JNA (Java Native Access) 获取、设置 Windows 操作系统的文件创建时间、文件修改时间、文件访问时间
- 厚积薄发——JAVA之IO获取最新修改文件与创建文件时间
- java获取文件创建时间
- Java 在给定路径上创建文件,所在文件夹不存在时,如何正确创建
- java获得文件的创建和最后访问修改时间
- C# 获取文件大小,创建时间,文件信息,FileInfo类的属性表
- java中如何获取项目各个目录下的文件