JFinal 怎么在getFile前获取必须的属性

JFinal 怎么在getFile前获取必须的属性,第1张

通常,文件、文件夹时间属性指的是创建时间、最近访问时间和最近修改时间等几个具体属性。对于文件的上述属性可以通过GetFileTime()来获取,对于文件夹,在通过CreateFile()函数将其打开后,其获取得到的句柄可以当作文件句柄来使用。因此,通过GetFileTime()函数同样也可以得到文件夹的时间属性。GetFileTime()函数原型如下:

BOOLGetFileTime(

HANDLE hFile, // 文件句柄

LPFILETIME lpCreationTime, // 创建时间的地址

LPFILETIME lpLastAccessTime, //最近访问时间的地址

LPFILETIME lpLastWriteTime // 最近修改时间的地址

);

其中后三个参数均是指向FILETIME结构的指针,得到的也都是UTC时间,如果需要,可以通过FileTimeToLocalFileTime()函数将此UTC时间转化成本地时间。而且还可以进一步通过FileTimeToSystemTime()函数将其从文件时间格式转化成系统时间格式,转化后的时间格式将保存在一个SYSTEMTIME结构对象中。类似的,在将时间信息写入到文件夹属性时,如果不是文件时间格式也应当通过SystemTimeToFileTime()函数将其从系统时间格式转换成文件时间格式,然后再通过SetFileTime()函数将指定的时间写入到文件夹的时间属性中去。这样,在进行数据备份和恢复的过程中,包括根目录在内的所有文件夹都可以保持时间属性的一致。

// 获取指定文件夹的时间属性,入口参数DirName指定了待处理的文件夹,

//stime为一指向SYSTEMTIME结构的指针

BOOLCSetForderTimeDlg::GetDirTime(CString DirName, SYSTEMTIME &stime){

// 打开文件夹

HANDLE hDir = CreateFile (DirName,GENERIC_READ,

FILE_SHARE_READ|FILE_SHARE_DELETE,

NULL, OPEN_EXISTING,

FILE_FLAG_BACKUP_SEMANTICS, NULL);

FILETIME lpCreationTime; // 文件夹的创建时间

FILETIME lpLastAccessTime; // 对文件夹的最近访问时间

FILETIME lpLastWriteTime; // 文件夹的最近修改时间

// 获取文件夹时间属性信息

if (GetFileTime(hDir,&lpCreationTime, &lpLastAccessTime, &lpLastWriteTime)){

FILETIME ftime;

FileTimeToLocalFileTime(&lpLastWriteTime,&ftime); // 转换成本地时间

FileTimeToSystemTime(&ftime,&stime); // 转换成系统时间格式

}

CloseHandle(hDir); // 关闭打开过的文件夹

return retval;

}

// 设置指定文件夹的时间属性,入口参数DirName指定了待处理的文件夹,

//new_time为一指向SYSTEMTIME结构的指针

BOOLCSetForderTimeDlg::SetDirTime(CString DirName, SYSTEMTIME new_stime){

// 打开目录的Win32 API调用

HANDLE hDir = CreateFile(DirName,GENERIC_READ|GENERIC_WRITE,

FILE_SHARE_READ|FILE_SHARE_DELETE,

NULL, OPEN_EXISTING,

FILE_FLAG_BACKUP_SEMANTICS, NULL);

FILETIME lpCreationTime; // 文件夹的创建时间

FILETIME lpLastAccessTime; // 对文件夹的最近访问时间

FILETIME lpLastWriteTime; // 对文件夹的最近修改时间

SystemTimeToFileTime(&new_stime,&lpCreationTime); // 转换成文件时间格式

SystemTimeToFileTime(&new_stime,&lpLastAccessTime);

SystemTimeToFileTime(&new_stime,&lpLastWriteTime);

CloseHandle(hDir); // 关闭文件夹

return retval;

}

一、gzip/deflate支持

现在的网页普遍支持gzip压缩,这往往可以解决大量传输时间,以VeryCD的主页为例,未压缩版本247K,压缩了以后45K,为原来的1/5。这就意味着抓取速度会快5倍。

然而python的urllib/urllib2默认都不支持压缩,要返回压缩格式,必须在request的header里面写明’accept-encoding’,然后读取response后更要检查header查看是否有’content-encoding’一项来判断是否需要解码,很繁琐琐碎。如何让urllib2自动支持gzip, defalte呢?

其实可以继承BaseHanlder类,然后build_opener的方式来处理:

import urllib2from gzip import GzipFilefrom StringIO import StringIOclass ContentEncodingProcessor(urllib2BaseHandler): """A handler to add gzip capabilities to urllib2 requests """ # add headers to requests def >

以上就是关于JFinal 怎么在getFile前获取必须的属性全部的内容,包括:JFinal 怎么在getFile前获取必须的属性、如何使用python爬虫jfinal、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9713808.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存