我写了个递归来得到一个目录下的所有目录包括子目录下的文件,并记录一共查找得到多少个文件。
我在测试其他目录(如一般的游戏目录,一般程序的目录)的文件数和我在资源管理器看的一样,但我让这个程序去查找windows 下的文件发现文件数和我用资源管理器看的不同,少了300多个文件,请问这是什么问题?
谢谢大虾。

解决方案 »

  1.   

    我程序在查找子目录当中的文件时用到了这样一个条件语句来判断文件,目的是排除".",".."和目录。不知道有没有用错?
    这就是在没有目录("."和".."
    if(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY &&
    strcmp(ffd.cFileName,".") && 
    strcmp(ffd.cFileName,".."))
      

  2.   

    上面打少了,sorry.
    我程序在查找子目录当中的文件时用到了这样一个条件语句来判断文件,目的是排除".",".."和目录。不知道有没有用错?
    这就是在没有目录(也排除"."和"..")下对文件查找的条件语句。
    if(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY &&
    strcmp(ffd.cFileName,".") && 
    strcmp(ffd.cFileName,".."))
      

  3.   

    这样判断目录并排除"."和".."就行了
    if(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY && ffd.cFileName[0] != '.')不过你那样好象也没错..
      

  4.   

    不知道楼上的你有没有测试过这样的方法?
    还有,我发现我的程序查找不到没标识属性的文件。例如readme.txt(没有标识--只读,隐藏,存档,系统,都没有选的).
      

  5.   

    唉......我好失望呀 。你们怎么不答我呀。
    是了,我换了个条件语句去查找使得更精确。
    但windows这个目录还是很奇怪的,我用这个软件去查一时查到10389,一时查到10391,资源管理器总是看到10389.那是什么回事?
    哪个条件语句如下:
    if(!(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY &&
    strcmp(ffd.cFileName,".") && 
    strcmp(ffd.cFileName,"..")) && 
                                         strcmp(ffd.cFileName,".") && 
    strcmp(ffd.cFileName,".."))
    我想我的程序很占资源呀。
      

  6.   

    ffd.cFileName是TCHAR类型,用strcmp()函数不起作用,所以你用
    if(!(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY &&
    strcmp(ffd.cFileName,".") && 
    strcmp(ffd.cFileName,"..")) && 
                                         strcmp(ffd.cFileName,".") && 
    strcmp(ffd.cFileName,".."))
    时不正确,应该用ffd.cFileName[0] == "."