1、system( "deltree 目录名 ");
2、这是还没写好的源码:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/types.h>
int main( void )
{
DIR* dirp;
struct dirent* direntp;
struct stat buf;
pid_t pid;
dirp = opendir( "/share/tmp" );/*打开一个目录 */
if( dirp == NULL ) {
perror( "can't open /share/tmp" );
} else {
for( ; ; ) {
direntp = readdir( dirp ); /*读目录里的内容*/
if( direntp == NULL ) /*如果是个空目录就把它删除*/
rmdir(/share/tmp);
for( ; ; ) {
if(lstat(directp->s_name,&buf)<0) { /*读出文件名*/
printf("lstat error/n");
exit(-1);
}else{
if( ! S_ISDIR(buf.st_mode)) < 0) { /*判断是否是一个目录*/
printf("check file mode error/n");
exit(1);
}else if
unlink(directp->s_name) ; /*如果不是就删除它*/
else
if((pid=fork())<0) {/*如果是就判断是否是一个空目录,是就删除它,这里考虑得不周到,fork一个进程,运行上面的算法,就是这里不懂了。要写个函数吧?*/
printf("fork error/n");
exit(1);
else if(pie == 0 )
chdir(directp->s_name);/*新的进程cd到新的目录*/
}
closedir( dirp );
}
return EXIT_SUCCESS;
}
3、递归的删除子目录的程序
#include "dos.h"
#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "dir.h"
#include "sys/stat.h"
#include "string.h"
struct ffblk f;
int done;
int attrib;
char deldir[MAXDIR],rootdir[MAXDIR],del[MAXDIR],dir[MAXDIR],mid[MAXDIR];
void pushdir()
{
done=findfirst("*.*",&f,FA_RDONLY|FA_HIDDEN|FA_DIREC|FA_SYSTEM|FA_ARCH);
while(!done)
{
if(16!=f.ff_attrib)
{
chmod(f.ff_name,S_IREAD|S_IWRITE);
unlink(f.ff_name);
printf("%s is deleted/n",f.ff_name);
}
if(16==f.ff_attrib&&strcmp(f.ff_name,".")&&strcmp(f.ff_name,".."))
{
getcwd(dir,MAXDIR);
if(!chdir(f.ff_name))
strcmp(del,f.ff_name);
else
{
printf("eixt/n");
exit(1);
}
pushdir();
}
done=findnext(&f);
}
getcurdir(0,mid);
if(!strcmp(mid,deldir))
{
chdir(rootdir);
rmdir(deldir);
printf("the end/n");
exit(0);
}
chdir(dir);
if(!rmdir(del))
{
printf("Remove %s",del);
}
else
printf("No move %s",del);
chdir(rootdir);
chdir(deldir);
pushdir();
}
void main(int argc,char *argv[])
{
if(2!=argc)
{
printf("Usage:/nrmd dirname/n");
exit(1);
}
strcmp(deldir,argv[1]);
strupr(deldir);
getcwd(rootdir,MAXDIR);
if(chdir(deldir))
{
printf("No this path:");
exit(0);
}
pushdir();
}
4、BOOL DeleteDirectory(LPCTSTR strDes)
{
//删除目标目录下的所有文件
WIN32_FIND_DATA FileData;
HANDLE hSearch;
BOOL bFinished=FALSE;
CString strTemp(strDes);
strTemp+=_T( "//*.* ");
hSearch=FindFirstFile((LPCTSTR)strTemp,&FileData);
if (hSearch==INVALID_HANDLE_VALUE){
bFinished=TRUE; //该目录下没有文件
}
while(!bFinished){
strTemp=strDes;
strTemp=strTemp+_T( "// ")+FileData.cFileName;
//是目录就进入递归调用
if (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ){
DeleteDirectory(strTemp);
}
else{//是文件则删除
DeleteFile(strTemp);
}
if (!FindNextFile(hSearch,&FileData)){
bFinished=TRUE;
}
}
FindClose(hSearch);
//删除空目录
RemoveDirectory(strDes);
return TRUE;
}
5、opendir(), readdir(), closedir() rmdir()
6、rmdir的原型int rmdir(const char *path),path是要删除的目录路径,在dir.h头文件中。
删除文件的函数int remove(char *fname),fname是要删除的文件名称,在stdio.h头文件中。