已知文件名,路径,如何获得该文件的创建时间?file类的lastmodified方法是获得修改时间,不是创建时间,有没有什么好的方法,跨平台的那个方法太难了,有没有简单的呢?
解决方案 »
- group.setProperties(user); 为什么设置失败。
- 输出异常问题
- 排序问题:
- 如何获取系统正在运行的程序列表?
- 一道程序题
- 第一次用JAVA,环境变量设置N次,重启N次后还出错,求救!!!!!!
- 急问题:showMessageDialog编译时总说“不兼容的类型”,换成showInputDialog就可以
- 谁用java和matlab混合编程
- 如何让Eclipse自动 import java.util.stream.Stream;
- 对象在内存中的状态的疑惑,求解答。
- java初学者提问,com.microsoft.sqlserver.jdbc.SQLServerException: 没有为参数号 6 设置值,只是什么异常?
- 这程序为什么不能读pdf啊?
http://topic.csdn.net/u/20080424/16/0a7b24d6-326d-44ab-9e1b-e7b5312d96ce.html
偶没用到过,帮LZ顶了。LZ找到方法别忘了分享下。
1.建个java模块。
public class FileCreateTime{
static native String getCreateTime(String s);
static {
System.loadLibrary("FileCreateTime");}
public static void main(String[] args){
String s;
s =FileCreateTime.getCreateTime(args[0]);
System.out.println(args[0]+" Create time is:" +s);
}}
2.执行命令:javac FileCreateTime.java生成 FileCreateTime.class
3.执行命令:javah FileCreateTime
4.实现头文件声明的函数并制作动态链接库。
我用微型编译器tinycc 0.9.25 for win。
为了减少命令行的长度,把java系统目录下的文件包括那个win32目录下的文件一个个复制到tinycc编译器的include目录下(不要复制win32,要复制其下面的文件,省得找不到)。改好的FileCreateTime.c如下:
#include "FileCreateTime.h"
#include <windows.h>
#include <stdio.h>
JNIEXPORT jstring JNICALL Java_FileCreateTime_getCreateTime
(JNIEnv *env, jclass jc , jstring js){
jstring jstr;
char buf[100];
const char * cformat;
FILETIME t,t2,t3,lt;
HANDLE f;
SYSTEMTIME st;
cformat = (*env)->GetStringUTFChars(env, js, NULL);
f=CreateFile(cformat, GENERIC_READ, // open for reading
0, // do not share
NULL, // default security
OPEN_EXISTING, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no template
if (f == INVALID_HANDLE_VALUE)
{
//printf("Could not open file.");
return NULL;
}
GetFileTime(f, &t, &t2, &t3); //取得文件创建,修改,存取时间
FileTimeToLocalFileTime(&t,<);//把创建时间从世界时转成本地时间。
FileTimeToSystemTime(<,&st);//转成本地格式
sprintf(buf,"%d-%d-%d %02d:%02d:%02d\n", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);//转成字符串
jstr = (*env)->NewStringUTF(env, buf);
return jstr;
}
编译方式极为简单:tcc -shared FileCreateTime.c
它会生成FileCreateTime.dll就能用了。
5.试试FileCreateTime.c的创建时间执行:java FileCreateTime FileCreateTime.c