如何将一个文件夹下的所有文件按照文件名排序

stigachen 2004-08-10 03:28:07
如题!不过需要特别强调的是要排序的结果要与windows按照文件名排序结果一致!我已经用常规的FindNextFile尝试过了,它的搜索顺序和windows有着比较大的差距。现在向各位征求更有效的方法!有人建议我用shell api,这个我也做了尝试,不过没有成功,哪位有更好的方法可以介绍一下吗?小弟先谢了!
...全文
917 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yening0914 2004-08-11
  • 打赏
  • 举报
回复
我看是你搞错了吧!!应该是:
_Copy of Copy of 052.jpg,101.jpg,12.jpg,9!0.jpg,Copy of 052.jpg
ywyw 2004-08-11
  • 打赏
  • 举报
回复
我也想知道啊
stigachen 2004-08-10
  • 打赏
  • 举报
回复
没人帮我了吗
stigachen 2004-08-10
  • 打赏
  • 举报
回复
在windows资源管理器中按文件名排序的结果为:_Copy of Copy of 052.jpg,9!0.jpg,12.jpg,101.jpg,Copy of 052.jpg
stigachen 2004-08-10
  • 打赏
  • 举报
回复
楼上大虾的方法所得排序结果为:101.jpg,12.jpg,9!0.jpg,Copy of 052.jpg,_Copy of Copy of 052.jpg,这与我试过的方法所得的结果是一样的。还是和windows资源管理器得到的结果不一样!
bohut 2004-08-10
  • 打赏
  • 举报
回复
上述代码在winxp+vc6.0环境下调试成功
bohut 2004-08-10
  • 打赏
  • 举报
回复
1.#include <IO.H>
2.
struct _finddata_t file;
long hFile;
int i,j;
char Tmp[256];
char szTemp[256] = {0};

int nFileNum,nIndex;
nFileNum = nIndex = 0;
char szFileName[100][256];


if( (hFile = _findfirst("c:\\test1\\*.*", &file ) ) == -1L )
{
_findclose( hFile );
return;
}

do
{
if ( (strcmp(file.name, ".") != 0 ) &&
(strcmp(file.name, "..") != 0)
)

{
strcpy(szFileName[nFileNum],file.name);
nFileNum++;

}
}while( _findnext(hFile,&file) == 0);

_findclose( hFile );

for( i = 1; i < nFileNum; ++i )
{
for(j = nFileNum - 1; j >= i; -- j )
{
if ( szFileName[j-1] > szFileName[j] )
{
strcpy(Tmp,szFileName[j-1]);
strcpy(szFileName[j-1], szFileName[j]);
strcpy(szFileName[j],Tmp);

strcpy(szTemp,szFileName[j-1]);
strcpy(szFileName[j-1],szFileName[j]);
strcpy(szFileName[j], szTemp);

}
}

}
for( i = 0;i<nFileNum;++i)
{
TRACE("%s\n",szFileName[i]);//输出排序好的文件名
}
stigachen 2004-08-10
  • 打赏
  • 举报
回复
那楼上的大虾,是否试过我上面提到的那一组文件呢。如果按照你的方法排序和windows一样的话,能贴出算法吗?
lixiaosan 2004-08-10
  • 打赏
  • 举报
回复
怎么会呢。。我怎么每次都是查找的是按文件名排序的啊
stigachen 2004-08-10
  • 打赏
  • 举报
回复
比如某个文件夹下有如下文件:_Copy of Copy of 052.jpg,9!0.jpg,12.jpg,101.jpg,Copy of 052.jpg。这是windows按照文件名排序的结果。而如果用FindNextFile方法枚举文件,它的顺序为:101.jpg,12.jpg,9!0.jpg,Copy of 052.jpg,_Copy of Copy of 052.jpg。
DentistryDoctor 2004-08-10
  • 打赏
  • 举报
回复
FindFirstFile==>FindNextFile==>FindClose==>Sort不行么,有什么特殊的要求?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧