隐藏文件夹及子文件

来源:互联网 发布:javascript简单爬虫 编辑:程序博客网 时间:2024/06/10 06:06

要隐藏文件,需要首先遍历文件夹及子文件,再调用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();
}

 

0 0
原创粉丝点击