您的位置:首页 > 其它

在VC中,如何修改文件的只读属性设置

2011-04-02 14:58 573 查看
static char BASED_CODE szFilter[] = "*.ppt";
CFileDialog FileDlg(TRUE,"PPT",NULL,OFN_FILEMUSTEXIST|OFN_NONETWORKBUTTON
|OFN_PATHMUSTEXIST,szFilter);
FileDlg.DoModal();

// To get the selected file's path and name
CString strFileName;
strFileName = FileDlg.GetPathName();

//-------------------将只读文件的只读属性去掉-----------------------
CFileStatus rStatus;
CFile::GetStatus(strFileName,rStatus);//获得文件的属性设置
rStatus.m_attribute=rStatus.m_attribute & 0x3E ; //如果文件为只读的,将只读属性去掉
//--------------------------------------------
CFile::SetStatus(strFileName, rStatus );//更改文件的属性设置
……

}

enum Attribute {
normal = 0x00, //对应的二进制编码是00 0000
readOnly = 0x01, //对应的二进制编码是00 0001
hidden = 0x02, //对应的二进制编码是00 0010
system = 0x04, //对应的二进制编码是00 0100
volume = 0x08, //对应的二进制编码是00 1000
directory = 0x10, //对应的二进制编码是01 0000
archive = 0x20 //对应的二进制编码是10 0000
};

所以取消某个属性的设置,就将相应的二进制编码的“1”位设置为0,然后其他位均为“1”,再转换为十六进制编码,然后进行“&”操作即可。如: rStatus.m_attribute & 0x3E(其中0x3E对应的二进制编码是11 1110)。

C语言判断文件是否存在
用函数access,头文件是io.h,原型:

int access(const char *filename, int amode);

amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。

这个函数还可以检查其它文件属性:

06 检查读写权限
04 检查读权限
02 检查写权限
01 检查执行权限
00 检查文件的存在性
在UNIX和VC下实验成功。
好处是 fopen(..,"r")不好,当无读权限时一不行了。
而这个就算这个文件没有读权限,也可以判断这个文件存在于否
存在返回0,不存在返回-1
#include <stdio.h>
int main()
{
printf ("%d",access("111",0));
}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/abcpanpeng/archive/2009/08/19/4461926.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐