指定したディレクトリ内のファイル数を
知る方法をどなたかご教授下さい。
Windows2000、VC++6.0、MFC不使用
FindFirstFileを使って、*.*を検索し、ファイルの識別分をカウントすればOKです。
サブディレクトリの場合は、再起法を使ってサブディレクトリ分をさらに加算します。
了解です。
やってみます。
ちなみに、昔作ったプログラムでTree表示するプログラムが下記です。
これは、FindFirstFileを使わず_findfirstと_findnextを使用しています。
#include <afxwin.h>
#include <io.h>
#include <direct.h>
BOOL flgDir;
BOOL flgTime;
void PrintFileName(
struct _finddata_t *fileinfo,
short nCnt
)
{
short i;
char sBuf[256];
char sWk[80];
struct tm *newtime;
memset( sBuf, 0, sizeof(sBuf) );
if( flgTime == TRUE) {
newtime = localtime( &fileinfo->time_write);
// memset( sWk, ' ', sizeof(sWk) );
// sWk[79 - strlen(sBuf) - 24] = 0;
// printf( %s, sWk);
printf( %02d/%02d/%02d %02d:%02d:%02d ,
newtime->tm_year % 100, newtime->tm_mon,
newtime->tm_mday,
newtime->tm_hour, newtime->tm_min, newtime-
>tm_sec);
}
for( i = 0; i < nCnt; i++) {
if( ( i == 0) &&
( fileinfo->attrib == _A_SUBDIR) &&
( flgDir == TRUE) ) {
printf( d );
} else {
printf( );
}
}
printf( fileinfo->name);
printf( %s, sBuf);
printf( \n);
}
void PrintTree(
short nNest
)
{
long hFile;
struct _finddata_t fileinfo;
hFile = _findfirst( *.*, &fileinfo );
while( _findnext( hFile, &fileinfo ) == 0 ) {
//
if( fileinfo.attrib == _A_SUBDIR ) {
if( fileinfo.name[0] != '.') {
PrintFileName( &fileinfo, nNest + 1);
_chdir( fileinfo.name);
PrintTree( nNest + 1);
_chdir( ..);
}
} else {
PrintFileName( &fileinfo, nNest + 1);
}
}
}
void main(
int argc,
char *argv[]
)
{
char **p;
char *pDat;
flgDir = FALSE;
flgTime = FALSE;
p = argv;
if( argc > 1) {
//
while( *++p != 0) {
pDat = *p;
if( *pDat == '-') {
if( ( *(pDat + 1) & 0xdf) == 'D') {
flgDir = TRUE;
} else if( ( *(pDat + 1) & 0xdf) == 'T') {
flgTime = TRUE;
}
}
pDat++;
}
}
PrintTree( 0);
}