Chinaunix首页 | 论坛 | 博客
  • 博客访问: 381405
  • 博文数量: 715
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:46
文章分类

全部博文(715)

文章存档

2011年(1)

2008年(714)

我的朋友

分类:

2008-10-13 16:31:11

#include <direct.h>
#include 
<io.h>
//
void C***Dlg::OnFileopenButton() 
{
    
char szFilename[80
];
    
// 字符串 szFilename 表示要查找的文件名 

    strcpy(szFilename,"test.mdb");
    _chdir(
"d:\");//
 进入要查找的路径(也可为某一具体的目录)
    
// 查找文件, 如果查到则显示文件的路径全名 

    Search_Directory(szFilename); 
    
// 为CSearchDlg类的一成员函数 

    MessageBox("查找文件完毕!");
    
// 显示查找完毕的信息

}

void C***Dlg::Search_Directory(char *szFilename)
{
    
long
 handle; 
    
struct
 _finddata_t filestruct;

    
//表示文件(或目录)的信息 

    char path_search[_MAX_PATH]; 

    
//
表示查找到的路径结果 
    
//
 开始查找工作, 找到当前目录下的第一个实体(文件或子目录), 
    
// ″*″表示查找任何的文件或子目录, filestruct为查找结果 


    handle 
= _findfirst("*"&filestruct); 

    
// 如果handle为-1, 表示当前目录为空, 则结束查找而返回 

    if((handle==-1))
        
return


    
// 检查找到的第一个实体是否是一个目录(filestruct.name为其名称) 

    if( ::GetFileAttributes(filestruct.name) & FILE_ATTRIBUTE_DIRECTORY ) 
    

        
//
 如果是目录, 则进入该目录并递归调用函数Search_Dirctory进行查找, 
        
// 注意: 如果目录名的首字符为′.′(即为″.″或″..″), 则不用进行查找 

        if( filestruct.name[0!= '.'
        

            _chdir(filestruct.name); 
            Search_Directory(szFilename); 
            
// 查找完毕之后, 返回上一级目录 

            _chdir(".."); 
        }
 
    }
 

    
else // 如果第一个实体不是目录, 则检查是否是要查找的文件 

    
    
// stricmp对两字符串进行小写形式的对比, 返回为0表示完全一致 

        if!stricmp(filestruct.name, szFilename) ) 
        

            
// 先获得当前工作目录的全路径 

            _getcwd(path_search,_MAX_PATH); 
            
// 再获得文件的完整的路径名(包含文件的名称) 

            strcat(path_search,"\"); 
            strcat(path_search,filestruct.name); 
            MessageBox(path_search); 
//输出显示 

        }
 
    }
 
    
// 继续对当前目录中的下一个子目录或文件进行与上面同样的查找 


    
while(!(_findnext(handle,&filestruct))) 
    

        
if( ::GetFileAttributes(filestruct.name) &
 FILE_ATTRIBUTE_DIRECTORY ) 
        

            
if(*filestruct.name != '.'

            

                _chdir(filestruct.name); 
                Search_Directory(szFilename); 
                _chdir(
".."
); 
            }
 
        }
 
        
else
 
        

            
if(!
stricmp(filestruct.name,szFilename)) 
            

                _getcwd(path_search,_MAX_PATH); 
                strcat(path_search,
"\"
); 
                strcat(path_search,filestruct.name); 
                MessageBox(path_search); 
            }
 
        }
 
    }
 
    _findclose(handle); 
    
// 最后结束整个查找工作 

}

--------------------next---------------------

阅读(237) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~