C++ 的Wince平台下如何遍历文件夹,获取所有的文件名

时间:2021-05-23 12:24:09
假如在\\mypro\\INI\\路径下(也可能别的文件)有文件a.ini、b.ini、c.ini……
如何遍历出所有的文件名(a.ini、b.ini、c.ini…)
Wince不是很熟,求帮忙,谢了

8 个解决方案

#1


和 PC 差不多是一样的


hFind = ::FindFirstFile(CurrentFullPath,&FindFileData);
if(hFind != INVALID_HANDLE_VALUE)
{
do
{
DWORD dwDirAttr = FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
if(FILE_ATTRIBUTE_DIRECTORY != dwDirAttr) // 判断条件自己修改
{
......
}
}while(::FindNextFile(hFind,&FindFileData));
}

#2


引用 1 楼 91program 的回复:
和 PC 差不多是一样的


hFind = ::FindFirstFile(CurrentFullPath,&FindFileData);
if(hFind != INVALID_HANDLE_VALUE)
{
do
{
DWORD dwDirAttr = FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
if(FILE_ATTRIBUTE_DIRECTORY != dwDirAttr) // 判断条件自己修改
{
......
}
}while(::FindNextFile(hFind,&FindFileData));
}

之前我用过这个了,但返回的FindFileData.cFileName不是文件名,而是路径的文件夹名

#3


本帖最后由 91program 于 2014-05-24 11:24:24 编辑
引用 2 楼 zhurcn 的回复:
之前我用过这个了,但返回的FindFileData.cFileName不是文件名,而是路径的文件夹名


以上是工程中现成的代码,FindFileData.cFileName 是文件名,而不是 LZ 所说的什么路径文件夹名。
LZ 要不就把你的代码弄出来,看看是什么问题。

如果你的目录中有子目录,肯定是会先找到这些子目录的,然后根据属性来判断是文件、还是子目录,就是我注释写的那句话。

#4


引用 3 楼 91program 的回复:
Quote: 引用 2 楼 zhurcn 的回复:

之前我用过这个了,但返回的FindFileData.cFileName不是文件名,而是路径的文件夹名


以上是工程中现成的代码,FindFileData.cFileName 是文件名,而不是 LZ 所说的什么路径文件夹名。
LZ 要不就把你的代码弄出来,看看是什么问题。

如果你的目录中有子目录,肯定是会先找到这些子目录的,然后根据属性来判断是文件、还是子目录,就是我注释写的那句话。

判断条件没进入,没有找到目录?

WIN32_FIND_DATA  FindFileData;
memset(FindFileData.cFileName, 0, sizeof(FindFileData.cFileName));
HANDLE hFind = FindFirstFile(L"\\FlashDev\\sound\\",&FindFileData);
if(hFind != INVALID_HANDLE_VALUE)
{
do
{
DWORD dwDirAttr = FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
if(FILE_ATTRIBUTE_DIRECTORY != dwDirAttr)        // 目录
{
wchar_t filename[260] = {0,};
swprintf(filename,L"%s",FindFileData.cFileName);
wprintf(L"==== filename=%s \n", filename);
}
}while(::FindNextFile(hFind,&FindFileData));
}
C++ 的Wince平台下如何遍历文件夹,获取所有的文件名

#5


FindFileData.dwFileAttributes值是16

#6


FindFirstFile(L"\\FlashDev\\sound\\",&FindFileData); 你这样只能判断文件夹是否存在

FindFirstFile(L"\\FlashDev\\sound\\*.*",&FindFileData);要找文件最好是这样。替换通配符可以指定更具体的
如 *.c, 找c文件。
不知道你弄清楚了没?

#7


FindFirstFile(L"\\FlashDev\\sound\\*",&FindFileData)
更简单用一个*应该也可以。

引用 4 楼 zhurcn 的回复:
Quote: 引用 3 楼 91program 的回复:

Quote: 引用 2 楼 zhurcn 的回复:

之前我用过这个了,但返回的FindFileData.cFileName不是文件名,而是路径的文件夹名


以上是工程中现成的代码,FindFileData.cFileName 是文件名,而不是 LZ 所说的什么路径文件夹名。
LZ 要不就把你的代码弄出来,看看是什么问题。

如果你的目录中有子目录,肯定是会先找到这些子目录的,然后根据属性来判断是文件、还是子目录,就是我注释写的那句话。

判断条件没进入,没有找到目录?

WIN32_FIND_DATA  FindFileData;
memset(FindFileData.cFileName, 0, sizeof(FindFileData.cFileName));
HANDLE hFind = FindFirstFile(L"\\FlashDev\\sound\\",&FindFileData);
if(hFind != INVALID_HANDLE_VALUE)
{
do
{
DWORD dwDirAttr = FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
if(FILE_ATTRIBUTE_DIRECTORY != dwDirAttr)        // 目录
{
wchar_t filename[260] = {0,};
swprintf(filename,L"%s",FindFileData.cFileName);
wprintf(L"==== filename=%s \n", filename);
}
}while(::FindNextFile(hFind,&FindFileData));
}
C++ 的Wince平台下如何遍历文件夹,获取所有的文件名

#8


引用 6 楼 accessysq 的回复:
FindFirstFile(L"\\FlashDev\\sound\\",&FindFileData); 你这样只能判断文件夹是否存在

FindFirstFile(L"\\FlashDev\\sound\\*.*",&FindFileData);要找文件最好是这样。替换通配符可以指定更具体的
如 *.c, 找c文件。
不知道你弄清楚了没?

哦,确实是少了*.*的原因,加了之后成功了,非常感谢

#1


和 PC 差不多是一样的


hFind = ::FindFirstFile(CurrentFullPath,&FindFileData);
if(hFind != INVALID_HANDLE_VALUE)
{
do
{
DWORD dwDirAttr = FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
if(FILE_ATTRIBUTE_DIRECTORY != dwDirAttr) // 判断条件自己修改
{
......
}
}while(::FindNextFile(hFind,&FindFileData));
}

#2


引用 1 楼 91program 的回复:
和 PC 差不多是一样的


hFind = ::FindFirstFile(CurrentFullPath,&FindFileData);
if(hFind != INVALID_HANDLE_VALUE)
{
do
{
DWORD dwDirAttr = FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
if(FILE_ATTRIBUTE_DIRECTORY != dwDirAttr) // 判断条件自己修改
{
......
}
}while(::FindNextFile(hFind,&FindFileData));
}

之前我用过这个了,但返回的FindFileData.cFileName不是文件名,而是路径的文件夹名

#3


本帖最后由 91program 于 2014-05-24 11:24:24 编辑
引用 2 楼 zhurcn 的回复:
之前我用过这个了,但返回的FindFileData.cFileName不是文件名,而是路径的文件夹名


以上是工程中现成的代码,FindFileData.cFileName 是文件名,而不是 LZ 所说的什么路径文件夹名。
LZ 要不就把你的代码弄出来,看看是什么问题。

如果你的目录中有子目录,肯定是会先找到这些子目录的,然后根据属性来判断是文件、还是子目录,就是我注释写的那句话。

#4


引用 3 楼 91program 的回复:
Quote: 引用 2 楼 zhurcn 的回复:

之前我用过这个了,但返回的FindFileData.cFileName不是文件名,而是路径的文件夹名


以上是工程中现成的代码,FindFileData.cFileName 是文件名,而不是 LZ 所说的什么路径文件夹名。
LZ 要不就把你的代码弄出来,看看是什么问题。

如果你的目录中有子目录,肯定是会先找到这些子目录的,然后根据属性来判断是文件、还是子目录,就是我注释写的那句话。

判断条件没进入,没有找到目录?

WIN32_FIND_DATA  FindFileData;
memset(FindFileData.cFileName, 0, sizeof(FindFileData.cFileName));
HANDLE hFind = FindFirstFile(L"\\FlashDev\\sound\\",&FindFileData);
if(hFind != INVALID_HANDLE_VALUE)
{
do
{
DWORD dwDirAttr = FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
if(FILE_ATTRIBUTE_DIRECTORY != dwDirAttr)        // 目录
{
wchar_t filename[260] = {0,};
swprintf(filename,L"%s",FindFileData.cFileName);
wprintf(L"==== filename=%s \n", filename);
}
}while(::FindNextFile(hFind,&FindFileData));
}
C++ 的Wince平台下如何遍历文件夹,获取所有的文件名

#5


FindFileData.dwFileAttributes值是16

#6


FindFirstFile(L"\\FlashDev\\sound\\",&FindFileData); 你这样只能判断文件夹是否存在

FindFirstFile(L"\\FlashDev\\sound\\*.*",&FindFileData);要找文件最好是这样。替换通配符可以指定更具体的
如 *.c, 找c文件。
不知道你弄清楚了没?

#7


FindFirstFile(L"\\FlashDev\\sound\\*",&FindFileData)
更简单用一个*应该也可以。

引用 4 楼 zhurcn 的回复:
Quote: 引用 3 楼 91program 的回复:

Quote: 引用 2 楼 zhurcn 的回复:

之前我用过这个了,但返回的FindFileData.cFileName不是文件名,而是路径的文件夹名


以上是工程中现成的代码,FindFileData.cFileName 是文件名,而不是 LZ 所说的什么路径文件夹名。
LZ 要不就把你的代码弄出来,看看是什么问题。

如果你的目录中有子目录,肯定是会先找到这些子目录的,然后根据属性来判断是文件、还是子目录,就是我注释写的那句话。

判断条件没进入,没有找到目录?

WIN32_FIND_DATA  FindFileData;
memset(FindFileData.cFileName, 0, sizeof(FindFileData.cFileName));
HANDLE hFind = FindFirstFile(L"\\FlashDev\\sound\\",&FindFileData);
if(hFind != INVALID_HANDLE_VALUE)
{
do
{
DWORD dwDirAttr = FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
if(FILE_ATTRIBUTE_DIRECTORY != dwDirAttr)        // 目录
{
wchar_t filename[260] = {0,};
swprintf(filename,L"%s",FindFileData.cFileName);
wprintf(L"==== filename=%s \n", filename);
}
}while(::FindNextFile(hFind,&FindFileData));
}
C++ 的Wince平台下如何遍历文件夹,获取所有的文件名

#8


引用 6 楼 accessysq 的回复:
FindFirstFile(L"\\FlashDev\\sound\\",&FindFileData); 你这样只能判断文件夹是否存在

FindFirstFile(L"\\FlashDev\\sound\\*.*",&FindFileData);要找文件最好是这样。替换通配符可以指定更具体的
如 *.c, 找c文件。
不知道你弄清楚了没?

哦,确实是少了*.*的原因,加了之后成功了,非常感谢