如何查找目录
编号: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 );
}
}
此问题由李海回答。
| |
|
|
| |
|
|