求一个Delphi能删除指定文件夹下的所有文件的demo
答案:2 悬赏:70 手机版
解决时间 2021-03-20 02:05
- 提问者网友:欲劫无渡
- 2021-03-19 22:35
求一个Delphi能删除指定文件夹下的所有文件的demo
最佳答案
- 五星知识达人网友:北城痞子
- 2021-03-19 23:17
Delphi 能够调用 Win32 API 函数吧,因为我用的是 C++ 语言,所以具体代码就不写出来了,给你大概思路:
枚举指定目录下的所有文件,如果是文件,则删除,如果是目录,则递归枚举。
下面是 C++ 代码:
bool DeleteDir( char* szDirPath )
{
int iFileNameLen = strlen( szDirPath );
char szTempDirPath[ MAX_PATH ];
ZeroMemory( szTempDirPath, sizeof( char ) * MAX_PATH );
if( '\\' == szDirPath[ iFileNameLen - 1 ] ) sprintf( szTempDirPath, "%s*.*", szDirPath );
WIN32_FIND_DATA wfd;
HANDLE hFile = FindFirstFileA( szTempDirPath, &wfd );
if( INVALID_HANDLE_VALUE == hFile )
{
printf( "Find First File Failed..." );
return false;
}
while( 0 != FindNextFileA( hFile, &wfd ) )
{
if( 0 == strcmp( ".", wfd.cFileName ) || 0 == strcmp( "..", wfd.cFileName ) )
continue;
char szPath[ MAX_PATH ];
ZeroMemory( szPath, sizeof( char ) * MAX_PATH );
sprintf( szPath, "%s%s\\", szDirPath, wfd.cFileName );
// 如果是目录,则递归枚举
if( FILE_ATTRIBUTE_DIRECTORY == wfd.dwFileAttributes )
{
DeleteDir( szPath );
}
// 否则,就是文件,我们删除它
else
{
DeleteFileA( szPath );
}
}
CloseHandle( hFile );
return true;
}
枚举指定目录下的所有文件,如果是文件,则删除,如果是目录,则递归枚举。
下面是 C++ 代码:
bool DeleteDir( char* szDirPath )
{
int iFileNameLen = strlen( szDirPath );
char szTempDirPath[ MAX_PATH ];
ZeroMemory( szTempDirPath, sizeof( char ) * MAX_PATH );
if( '\\' == szDirPath[ iFileNameLen - 1 ] ) sprintf( szTempDirPath, "%s*.*", szDirPath );
WIN32_FIND_DATA wfd;
HANDLE hFile = FindFirstFileA( szTempDirPath, &wfd );
if( INVALID_HANDLE_VALUE == hFile )
{
printf( "Find First File Failed..." );
return false;
}
while( 0 != FindNextFileA( hFile, &wfd ) )
{
if( 0 == strcmp( ".", wfd.cFileName ) || 0 == strcmp( "..", wfd.cFileName ) )
continue;
char szPath[ MAX_PATH ];
ZeroMemory( szPath, sizeof( char ) * MAX_PATH );
sprintf( szPath, "%s%s\\", szDirPath, wfd.cFileName );
// 如果是目录,则递归枚举
if( FILE_ATTRIBUTE_DIRECTORY == wfd.dwFileAttributes )
{
DeleteDir( szPath );
}
// 否则,就是文件,我们删除它
else
{
DeleteFileA( szPath );
}
}
CloseHandle( hFile );
return true;
}
全部回答
- 1楼网友:往事埋风中
- 2021-03-20 00:12
你好!
使用API函数FindFirstFile、FindNextFile和DeleteFile就可以实现了!
并不复杂!
打字不易,采纳哦!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯