我们拷贝的文件,往往为了隐藏或者是加入需要加入新的属性设置,哪么设置属性的函数就是这个函数了SetFileAttributes。现在让我来认真的分析一下这个函数吧。
VC函数原型:
BOOL SetFileAttributes(
  LPCTSTR lpFileName,
  DWORD dwFileAttributes
);

VC函数参数说明:
lpFileName LPCTSTR 文件名所在地址的字符
dwFileAttributes DWORD 给文件设置的相应属性
 设置属性值的说明:
 FILE_ATTRIBUTE_HIDDEN  隐藏
 FILE_ATTRIBUTE_ARCHIVE 存档
 FILE_ATTRIBUTE_NORMAL 普通
 FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
 FILE_ATTRIBUTE_OFFLINE
 FILE_ATTRIBUTE_READONLY 只读
 FILE_ATTRIBUTE_SYSTEM  系统文件
 FILE_ATTRIBUTE_TEMPORARY

VC函数返回值:
如果设置成功返回非零值(TRUE),否则返回零值(FALSE);

VC函数源代码:

if (CopyFile(FileData.cFileName, szNewPath, FALSE))
{
dwAttrs = GetFileAttributes(FileData.cFileName);
if (dwAttrs==INVALID_FILE_ATTRIBUTES) return;

if (!(dwAttrs & FILE_ATTRIBUTE_READONLY))
{
SetFileAttributes(szNewPath,
dwAttrs | FILE_ATTRIBUTE_READONLY);
}
}
else
{
printf("Could not copy file.n");
return;
}


 

bResult = ::SetFileAttributes(L"123.txt", FILE_ATTRIBUTE_ARCHIVE); if(!bResult) { DWORD dwErr = GetLastError(); } ///////////////////////////////////////////////////////////////////////////////////////////////本人实例:
//写入bin二进制数据
CString strPath(_T("D:\\PCDatabase\\GSMSet.bin"));
//先将文件属性设置为普通文件
::SetFileAttributes(strPath,FILE_ATTRIBUTE_NORMAL);
//写入数据
WriteItem(strPath,&SetArray);

//修改文件时间属性:创建时间 修改时间 访问时间
ModifyFileTime();

//再设置文件属性为隐藏 只读和系统文件
::SetFileAttributes(strPath,FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM);

//MessageBox(strLacID+strTime+strHostID+strLacCount+strbThread+strGSMErrorCount+strSimID,"写入BIN数据",MB_OK);
MessageBox("GSMSet配置文件写入成功!","BELSON",MB_OK);