您的位置:首页 > 其它

隐藏文件夹及子文件

2015-06-30 11:39 183 查看
要隐藏文件,需要首先遍历文件夹及子文件,再调用SetFileAttributes(szFind, FILE_ATTRIBUTE_HIDDEN);将文件或文件夹隐藏

1、windows api版

find(char * lpPath)

{

  char szFind[MAX_PATH];

  WIN32_FIND_DATA FindFileData;

  strcpy(szFind,lpPath);

  strcat(szFind,"*.*");

  HANDLE hFind=::FindFirstFile(szFind,&FindFileData);

  if(INVALID_HANDLE_VALUE == hFind)  

return;

SetFileAttributes(szFind, FILE_ATTRIBUTE_HIDDEN);

  while(TRUE)

  {

    if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

    {

      if(FindFileData.cFileName[0]!='.')

      {

        strcpy(szFile,lpPath);

        strcat(szFile,"");

        strcat(szFile,FindFileData.cFileName);

        find(szFile);

      }

    }

    else

    {

      SetFileAttributes(FindFileData.cFileName, FILE_ATTRIBUTE_HIDDEN);

    }

    if(!FindNextFile(hFind,&FindFileData))  

break;

  }

  FindClose(hFind);

}

2、mfc版

void HideFile(CString strFolder)

{

SetFileAttributes(strFolder, FILE_ATTRIBUTE_HIDDEN);

CFileFind tempFind;

BOOL bFound; //判断是否成功找到文件

bFound = tempFind.FindFile(strFolder + _T("\\*.*")); // 修改" "内内容给限定查找文件类型

CString strTmp; //如果找到的是文件夹存放文件夹路径

while (bFound) //遍历所有文件

{

bFound = tempFind.FindNextFile(); //第一次执行FindNextFile是选择到第一个文件,以后执行为选择

//到下一个文件

if (tempFind.IsDots()) //如果找到的是返回上层的目录 则结束本次查找

continue;

if (tempFind.IsDirectory()) //找到的是文件夹,则遍历该文件夹下的文件

{

strTmp = tempFind.GetFilePath();

HideFile(strTmp);

}

else

{

strTmp = tempFind.GetFilePath(); //保存文件名,包括后缀名

SetFileAttributes(strTmp, FILE_ATTRIBUTE_HIDDEN);

}

}

tempFind.Close();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: