您的位置:首页 > 编程语言 > C语言/C++

文件夹创建以及文件删除C语言实现

2015-06-27 21:57 453 查看
文件操作相关的头文件:

#ifndef HEADER_FILE_
#define HEADER_FILE_
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>

#ifdef LINUX_FILEOPT
#include<dirent.h>
#include<unistd.h>
#define ACCESS access
#define MKDIR(a) mkdir((a),0755)
int L_operation_dir(char *str);
#elif WINDOWS_FILEOPT
#include<direct.h>
#include<io.h>
#define ACCESS _access
#define MKDIR(a) _mkdir((a))
int W_operation_dir(char *str);
#endif

#endif
其实这个程序的思想也很简单,创建目录的时候依次读取文件夹的名字,然后看文件夹是否存在,如果不存在就利用mkdir函数开始创建。此处为了屏蔽操作系统的差异采用条件编译进行:

#define LINUX_FILEOPT
#include"file.h"

int creatdir(char *dir)
{
int i=0;
int iRet;
int iLen;
char *pszDir;

if(NULL==dir){
return 0;
}

pszDir=strdup(dir);
iLen=strlen(pszDir);

for(i=0;i<iLen;i++){
if(pszDir[i]=='\\'||pszDir[i]=='/'){
pszDir[i]='\0';
iRet=ACCESS(pszDir,0);
if(iRet!=0){
iRet=MKDIR(pszDir);
if(iRet!=0)
return -1;
}
pszDir[i]='/';
}
}
iRet=MKDIR(pszDir);

return iRet;
}
#ifdef LINUX_FILEOPT
int L_operation_dir(char *str)
{
DIR *dir;
struct dirent *ptr;
char filename[BUFSIZ]={0};

dir=opendir(str);

if(dir==NULL)
creatdir(str);
else{
while((ptr=readdir(dir))!=NULL){
if((!strcmp(".",ptr->d_name))||(!strcmp("..",ptr->d_name)))
continue;
else{
printf("last data:%s\n",ptr->d_name);
sprintf(filename,"%s/%s",str,ptr->d_name);
printf("file:%s\n",filename);
if(unlink(filename)<0){
printf("delete %s failed\n",ptr->d_name);
exit(1);
}
}
}
closedir(dir);
}
}

#elif WINDOWS_FILEOPT
int W_operation_dir(char *str)
{
char cmd[30]={0};
struct _finddata_t fa;
long handle;

if((handle = _findfirst(strcat(str,"*"),&fa))==-1L){
printf("path does not exist...\n");
creatdir(str);
return 0;
}
else{
sprintf(cmd,"del /s /q /f %s/*.bmp ",str);
system(cmd);
}
_findclose(handle);
return 0;
}
#endif
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: