龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC编程改变指定的文件或文件夹的属性(3)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
//声明结构对象 FILE_INFO FileInfo; WIN32_FIND_DATA FindFileData; …… //获取文件属性信息 FindClose(FindFirstFile("Test.txt",FindFileData)); memset(FileInfo,0,sizeof(FILE_INFO)); ……

//声明结构对象
FILE_INFO FileInfo;
WIN32_FIND_DATA FindFileData;
……
//获取文件属性信息
FindClose(FindFirstFile("Test.txt",&FindFileData));
memset(&FileInfo,0,sizeof(FILE_INFO));
……
//将文件属性信息保存到FileInfo中备用
strcpy(FileInfo.szFileTitle,myFile.GetFileTitle());
FileInfo.dwFileAttributes = FindFileData.dwFileAttributes;
FileInfo.ftCreationTime = FindFileData.ftCreationTime;
FileInfo.ftLastAccessTime = FindFileData.ftLastAccessTime;
FileInfo.ftLastWriteTime = FindFileData.ftLastWriteTime;
FileInfo.nFileSizeHigh = FindFileData.nFileSizeHigh;
FileInfo.nFileSizeLow = FindFileData.nFileSizeLow;
……

  在获取到文件的原始属性信息后既可以原封不动的将属性重新写到文件,也可以对其中某一项或某几项属性内容进行修改后再行写入文件,从而达到更改文件属性的目的。比如可以用SetFileTime()函数设置文件的创建时间、最近一次访问时间以及最近一次修改的时间等等:

SetFileTime((HANDLE)destFile.m_hFile, //待写入的文件句柄
&FileInfo.ftCreationTime, //文件的创建时间
&FileInfo.ftLastAccessTime, //文件最近一次的访问时间
&FileInfo.ftLastWriteTime); //文件最近一次的修改时间

  也可以用SetFileAttributes() 函数实现对文件属性的修改:

SetFileAttributes(FileInfo.szFileTitle,FileInfo.dwFileAttributes);


  二、编程步骤

  1、启动Visual C++6.0,生成一个基于对话框的应用程序,命名为"File";

  2、修改对话框界面,在其上放置一个按钮控件,Caption设置为"修改属性",然后使用Class Wizard为该按钮添加鼠标单击消息响应函数;

  3、在项目文件夹中放置"1.doc"、"2.doc"文件;

  4、添加代码,编译运行程序。

  三、程序代码

/////////////////////////////////////
void CFileDlg::OnTest()
{
myFile.Open("1.doc", CFile::modeReadWrite);
destFile.Open("2.doc", CFile::modeReadWrite);
//声明结构对象
FILE_INFO FileInfo;
WIN32_FIND_DATA FindFileData;
//获取文件属性信息
FindClose(FindFirstFile("1.doc", &FindFileData));
memset(&FileInfo,0,sizeof(FILE_INFO));
//将文件属性信息保存到FileInfo中备用
strcpy(FileInfo.szFileTitle, myFile.GetFileTitle());
FileInfo.dwFileAttributes = FindFileData.dwFileAttributes;
FileInfo.ftCreationTime = FindFileData.ftCreationTime;
FileInfo.ftLastAccessTime = FindFileData.ftLastAccessTime;
FileInfo.ftLastWriteTime = FindFileData.ftLastWriteTime;
FileInfo.nFileSizeHigh = FindFileData.nFileSizeHigh;
FileInfo.nFileSizeLow = FindFileData.nFileSizeLow;
SetFileTime((HANDLE)destFile.m_hFile, //待写入的文件句柄
&FileInfo.ftCreationTime, //文件的创建时间
&FileInfo.ftLastAccessTime, //文件最近一次的访问时间
&FileInfo.ftLastWriteTime); //文件最近一次的修改时间
SetFileAttributes(FileInfo.szFileTitle,FileInfo.dwFileAttributes);
myFile.Close();
destFile.Close();
}

  四、小结

  本文通过对WIN32_FIND_DATA结构和SetFileTime()、SetFileAttributes()等主要函数实现了对磁盘文件的相关属性信息的获取与修改。用此技术可以在通讯等对文件有严格要求的应用领域实现文件或文件夹的全部信息(包括文件内容、文件名以及文件属性等)的完整传送。

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接