API中进行文件查找操作时怎么返回上级目录

发布网友 发布时间:2022-04-22 06:27

我来回答

3个回答

热心网友 时间:2023-06-28 02:12

选择窗口 下拉菜单会显示你的操作,想去哪里直接点就可以

热心网友 时间:2023-06-28 02:12

啥意思?能说详细点吗?

热心网友 时间:2023-06-28 02:13

可以利用每个目录中都有的“..”这个“文件”来达到上一层目录。

总之这个时候你只需要从新做FindFirstFile就行了。

写了一个小程序演示这个过程:
#include <windows.h>
void EnumFiles(WIN32_FIND_DATA *data){
if(data->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){
printf("在目录中找到了子目录[ %s ].\n",data->cFileName);
}else{
printf("在目录中找到了文件[ %s ].\n",data->cFileName);
}
//printf("filename length : %d\n",strlen(data->cFileName));
}
int main(int argc, char *argv[])
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
BOOL fFindParentFolder;
TCHAR szPath[MAX_PATH] = "../*";
do{
printf("\n\t#正在搜索目录【 %s\b 】 ...\n\n",szPath);
fFindParentFolder = FALSE;
hFind = FindFirstFile(szPath,&FindFileData);
if(hFind == INVALID_HANDLE_VALUE)return -1;
do{
if(strcmp(FindFileData.cFileName,"..") == '\0'){
fFindParentFolder = TRUE;
printf("\n\t#找到了此目录的父目录:\n\n");
}
EnumFiles(&FindFileData);
}while(FindNextFile(hFind,&FindFileData));
if(fFindParentFolder == FALSE){
printf("\n\t#已经到达目录系统的顶端.\n\n");
}else{
memmove(&szPath[3],&szPath[0],strlen(szPath) + 1);
}
}while(fFindParentFolder == TRUE);

return 0;
}

在我这里,我在桌面运行这个程序的输出如下:

#正在搜索目录【 ../ 】 ...

在目录中找到了子目录[ . ].

#找到了此目录的父目录:

在目录中找到了子目录[ .. ].
在目录中找到了文件[ .appcfg_cookies ].
在目录中找到了文件[ .appcfg_nag ].
在目录中找到了子目录[ AppData ].
在目录中找到了子目录[ Application Data ].
在目录中找到了子目录[ Contacts ].
在目录中找到了子目录[ Cookies ].
在目录中找到了子目录[ Desktop ].
在目录中找到了子目录[ Documents ].
在目录中找到了子目录[ Downloads ].
在目录中找到了子目录[ Favorites ].
在目录中找到了子目录[ Links ].
在目录中找到了子目录[ Local Settings ].
在目录中找到了子目录[ Music ].
在目录中找到了子目录[ My Documents ].
在目录中找到了子目录[ NetHood ].
在目录中找到了文件[ NTUSER.DAT ].
在目录中找到了文件[ ntuser.dat.LOG1 ].
在目录中找到了文件[ ntuser.dat.LOG2 ].
在目录中找到了文件[ NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TM.blf ].
在目录中找到了文件[ NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TMContainer00000000000000000001.regtrans-ms ].
在目录中找到了文件[ NTUSER.DAT{6cced2f1-6e01-11de-8bed-001e0bcd1824}.TMContainer00000000000000000002.regtrans-ms ].
在目录中找到了文件[ ntuser.ini ].
在目录中找到了子目录[ Pictures ].
在目录中找到了子目录[ PrintHood ].
在目录中找到了子目录[ Recent ].
在目录中找到了子目录[ Saved Games ].
在目录中找到了子目录[ Searches ].
在目录中找到了子目录[ SendTo ].
在目录中找到了子目录[ Templates ].
在目录中找到了子目录[ Videos ].
在目录中找到了子目录[ 「开始」菜单 ].

#正在搜索目录【 ../../ 】 ...

在目录中找到了子目录[ . ].

#找到了此目录的父目录:

在目录中找到了子目录[ .. ].
在目录中找到了子目录[ All Users ].
在目录中找到了子目录[ bombless ].
在目录中找到了子目录[ Default ].
在目录中找到了子目录[ Default User ].
在目录中找到了文件[ desktop.ini ].
在目录中找到了子目录[ Public ].

#正在搜索目录【 ../../../ 】 ...

在目录中找到了子目录[ $Recycle.Bin ].
在目录中找到了文件[ 4thGameHook.txt ].
在目录中找到了子目录[ ATI ].
在目录中找到了文件[ authres.html ].
在目录中找到了文件[ autoexec.bat ].
在目录中找到了子目录[ Boot ].
在目录中找到了文件[ bootmgr ].
在目录中找到了文件[ BOOTSECT.BAK ].
在目录中找到了文件[ config.sys ].
在目录中找到了子目录[ DEV-CPP ].
在目录中找到了子目录[ Documents and Settings ].
在目录中找到了子目录[ Download ].
在目录中找到了子目录[ Downloads ].
在目录中找到了文件[ grldr ].
在目录中找到了文件[ hiberfil.sys ].
在目录中找到了文件[ IO.SYS ].
在目录中找到了子目录[ KMPlayer ].
在目录中找到了文件[ MSDOS.SYS ].
在目录中找到了文件[ pagefile.sys ].
在目录中找到了子目录[ PerfLog ].
在目录中找到了子目录[ PerfLogs ].
在目录中找到了子目录[ Program Files ].
在目录中找到了子目录[ ProgramData ].
在目录中找到了子目录[ Recovery ].
在目录中找到了子目录[ RECYCLER ].
在目录中找到了子目录[ Ruijie Supplicant ].
在目录中找到了子目录[ System Volume Information ].
在目录中找到了子目录[ Users ].
在目录中找到了子目录[ Windows ].

#已经到达目录系统的顶端.

表明程序应该是运作正常的。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com