热情软件屋

 

如何查找目录


编号:QA001633
建立日期: 1999年8月31日 最后修改日期:2001年3月1日
所属类别:

勇毅:
    Turbo C++
    Win98
    我想将硬盘里的目录(Directory) , 子目录 (sub directory)和文件全部放进一个 array里面但是不知如何做和用什么command。现在我只知道用 findfirst 和findnext来找文件但不会找目录。希望您能教我。谢谢!

回答:

    你可以利用findfirst和findnext来查找目录。findfirst的第三个参数设置为FA_DIREC就可以查找目录。如果你想在一个目录下的所有目录进行搜索,可以参考微软的Knowledge Base的文章:“Q185476 OWTO: Search Directories to Find or List Files”,介绍了如何利用Windows API来实现这样的功能,但原理可以适用于TC++。
    
    王世奇问: vc里面怎么办?
    答:VC++中可以象微软的Knowledge Base的文章:“Q185476 OWTO: Search Directories to Find or List Files”那样调用API函数来做,也可以利用_findfirst函数,下面就是一个例子:
    #include <stdio.h>
    #include <io.h>
    #include <time.h>
    
    void main( void )
    {
        struct _finddata_t c_file;
        long hFile;
    
        /* Find first .c file in current directory */
        if( (hFile = _findfirst( "*.c", &c_file )) == -1L )
           printf( "No *.c files in current directory!\n" );
       else
       {
                printf( "Listing of .c files\n\n" );
                printf( "\nRDO HID SYS ARC  FILE         DATE %25c SIZE\n", ' ' );
                printf( "--- --- --- ---  ----         ---- %25c ----\n", ' ' );
                printf( ( c_file.attrib & _A_RDONLY ) ? " Y  " : " N  " );
                printf( ( c_file.attrib & _A_SYSTEM ) ? " Y  " : " N  " );
                printf( ( c_file.attrib & _A_HIDDEN ) ? " Y  " : " N  " );
                printf( ( c_file.attrib & _A_ARCH )   ? " Y  " : " N  " );
                printf( " %-12s %.24s  %9ld\n",
                   c_file.name, ctime( &( c_file.time_write ) ), c_file.size );
    
                /* Find the rest of the .c files */
                while( _findnext( hFile, &c_file ) == 0 )
                {
                    printf( ( c_file.attrib & _A_RDONLY ) ? " Y  " : " N  " );
                    printf( ( c_file.attrib & _A_SYSTEM ) ? " Y  " : " N  " );
                    printf( ( c_file.attrib & _A_HIDDEN ) ? " Y  " : " N  " );
                    printf( ( c_file.attrib & _A_ARCH )   ? " Y  " : " N  " );
                    printf( " %-12s %.24s  %9ld\n",
                       c_file.name, ctime( &( c_file.time_write ) ), c_file.size );
                }
    
           _findclose( hFile );
       }
    }

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio