付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/前言:在我写这篇文章之前,我说说我的碰到这个问题的起因。公司让我写一个jar包,需要获得指定文件的创建日期(日期必须是完整地年月日时分秒)。对于javajdk1.7来说很容易,因为1.7给了我们获得创建日期的接口。但是对于jdk1.6来说,那就是一个老大难,没有提供,只提供了获得最后修改日期的接口。个人收集整理勿做商业用途对于jdk1.6,当然我也查过,请教过好多人,给出了解决办法,那就是使用Java的Runtime去调用当前操作系统的指令获得文件的创建日期:个人收集整理勿做商业用途例如在windows下,publicStringgetFileCreateDate(File_file){Filefile=_file;
try{
Processls_proc=Runtime.getRuntime().exec(
"cmd.exe/cdir"+file.getAbsolutePath()+"/tc");
个人收集整理勿做商业用途BufferedReaderbr=newBufferedReader(newInputStreamReader(ls_proc.getInputStream()));
个人收集整理勿做商业用途for(inti=0;i<5;i++){
br.readLine();
}
Stringstuff=br.readLine();
StringTokenizerst=newStringTokenizer(stuff);
StringdateC=st.nextToken();
Stringtime=st.nextToken();
Stringdatetime=dateC.concat(time);
SimpleDateFormatformatter1=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");
个人收集整理勿做商业用途SimpleDateFormatformatter2=newSimpleDateFormat(
个人收集整理勿做商业用途"yyyy/MM/ddHH:mm");
datetime=formatter1.format(formatter2.parse(datetime));
个人收集整理勿做商业用途
br.close();
returndatetime;
}catch(Exceptione){
returnnull;
}
}引用:/question/535215288.html但是这个方法只能或得到文件的年月日时分,不能获得到秒。为了获得到秒,最后使用了jni。步骤:1、使用c和C++写一个获得文件创建时间的类#pragmaonce//Modifythefollowingdefinesifyouhavetotargetaplatformpriortotheonesspecifiedbelow.//RefertoMSDNforthelatestinfooncorrespondingvaluesfordifferentplatforms.#ifndefWINVER//AllowuseoffeaturesspecifictoWindowsXPorlater.#defineWINVER0x0501//ChangethistotheappropriatevaluetotargetotherversionsofWindows.#endif#ifndef_WIN32_WINNT//AllowuseoffeaturesspecifictoWindowsXPorlater.#define_WIN32_WINNT0x0501//ChangethistotheappropriatevaluetotargetotherversionsofWindows.#endif#ifndef_WIN32_WINDOWS//AllowuseoffeaturesspecifictoWindows98orlater.#define_WIN32_WINDOWS0x0410//ChangethistotheappropriatevaluetotargetWindowsMeorlater.#endif#ifndef_WIN32_IE//AllowuseoffeaturesspecifictoIE6.0orlater.#define_WIN32_IE0x0600//ChangethistotheappropriatevaluetotargetotherversionsofIE.#endif#defineWIN32_LEAN_AND_MEAN//Excluderarely-usedstufffromWindowsheaders//WindowsHeaderFiles:#include<windows.h>个人收集整理勿做商业用途
//WinFileTime.cpp:DefinestheentrypointfortheDLLapplication.//#include"stdafx.h"#include"FileClass/FileTimeEx.h"#ifdef_MANAGED#pragmamanaged(push,off)#endifBOOLAPIENTRYDllMain(HMODULEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){returnTRUE;}JNIEXPORTjstringJNICALLJava_checkfile_WinFileTime_getFileCreationTime(JNIEnv*env,jobjectcls,jstringFileName){HANDLEhFile;FILETIMEcreationTime;FILETIMElastAccessTime;FILETIMElastWriteTime;FILETIMEcreationLocalTime;SYSTEMTIMEcreationSystemTime;jstringresult;charfileTimeString[30];hFile=CreateFileA((char*)env->GetStringUTFChars(FileName,0),GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);if(hFile==INVALID_HANDLE_VALUE)returnenv->NewStringUTF("");if(GetFileTime(hFile,&creationTime,&lastAccessTime,&lastWriteTime)){if(FileTimeToLocalFileTime(&creationTime,&creationLocalTime)){if(FileTimeToSystemTime(&creationLocalTime,&creationSystemTime)){sprintf_s(fileTimeString,"d-d-dd:d:d\0",creationSystemTime.wYear,creationSystemTime.wMonth,creationSystemTime.wDay,creationSystemTime.wHour,creationSystemTime.wMinute,creationSystemTime.wSecond),result=env->NewStringUTF(fileTimeString);}elseresult=env->NewStringUTF("");}elseresult=env->NewStringUTF("");}elseresult=env->NewStringUTF("");CloseHandle(hFile);returnresult;}#ifdef_MANAGED#pragmamanaged(pop)#endif个人收集整理勿做商业用途2、然后生成动态链接文件(*.dll),将这个文件放到C:\Windows\System32和你的javajdk目录下D:\ProgramFiles\Java\jdk1.6.0_18\jre\bin。个人收集整理勿做商业用途3、java文件中写法publicfinalclassWinFileTime{static{System.loadLibrary("WinFileTime");}privatestaticnativeStringgetFileCreationTime(StringfileName);publicstaticStringgetCreationTime(StringfileName){returngetFileCreationTime(fileName);}}}个人收集整理勿做商业用途注意:头文件与类文件的方法名必须与java中的类名一直,如:c中是Java_checkfile_WinFileTime_getFileCreationTime,那么java中就是checkfile.WinFileTime.getFileCreationTime(checkfile是包名,WinFileTime是类名,getFileCreationTime是方法名).个人收集整理勿做商业用途jdk1.7方法:下载一个jdk1.7帮助文档,看看这个类BasicFileAttributeView。Pathpath=Paths.get(filePath);
BasicFileAttributeViewbasicview=Files.getFi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江龙游人才科创有限公司招聘销售专员1人笔试历年参考题库附带答案详解
- 2026浙江温州市平阳县直属人才发展有限公司招聘及情况笔试历年参考题库附带答案详解
- 2026浙江国检检测技术股份有限公司第一轮招聘笔试及人员笔试历年参考题库附带答案详解
- 2026河南省人才集团博州分公司招聘6人笔试历年参考题库附带答案详解
- 2026年河北省沙河市高一化学上册期末考试模拟卷及答案【必刷】
- 2026年四川省江油市高一化学上册期末考试模拟卷必考附答案
- 2026河北保定雄安新区国企单位兼职人员招聘笔试历年参考题库附带答案详解
- 三年级数学计算题专项练习及答案集锦
- 办公用品定做协议书模板
- 复婚协议书代替离婚协议书
- 2026江苏苏州工业园区管理委员会招聘44人备考题库带答案详解
- 江苏省南京市2025~2026学年八年级英语下册期末考试模拟题(含答案解析)
- 2026年杭州余杭区中泰街道2026年面向社会公开招聘村务工作者8人考试备考试题及答案解析
- 2026年山西建投校园招聘笔试题库
- 2026年安全生产月主题宣贯课件
- GB/T 47543-2026无障碍旅游服务规范旅游饭店
- 工业网络安全防护体系建设方案
- 老年人常见疾病用药注意事项
- 拉萨市2026事业单位联考-综合应用能力B类社会科学专技模拟卷(含答案)
- 非煤矿山企业安全生产管理制度汇编
- 雨课堂学堂在线学堂云《跨文化交际英语(北京理工)》单元测试考核答案
评论
0/150
提交评论