删除目录

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头文件中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值