隐藏文件夹及子文件
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();
}
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();
}
相关文章推荐
- 自定义类 作为item放入QList中 没有可用的复制构造函数或复制构造函数声明为“explicit”
- 聚焦
- 使用android的webview控件访问有道词典的url
- 自定义table
- AngularJS中的隐式和显式依赖注入
- OJ第三批——Problem F:C++习题 输入输出--保护继承
- 阿里云部署java环境
- 游戏设计情境探秘之动画
- 背景音乐的实现
- Tiny模板引擎之开发工具
- 在Ubuntu或Debian系统的服务器上卸载MySQL的方法
- 《猜猜看》之界面设置
- 查看网络图片
- ios crash文件收集(一)
- 使用POI中的XSSFWorkbook操作excel2007(xlsx)的异常:找不到类解决
- 怎样确定 Org 所用的 Ledger 是什么
- MySQL导入sql脚本错误:2006 - MySQL server has gone away
- 【算法】弗洛伊德(Floyd)算法
- ldconfig 的问题
- Excel中的資料 匯入到DB