c语言创建文件夹与删除文件夹

今天在写代码时遇到对文件夹的创建删除操作,经过一番查找试验,筛选出两种方法,mark一下

方法一(通用)
#include<stdio.h>
#include <io.h>//_access的头文件

int fun(char*filepath)
{
    int res;
  //filepath为绝对路径
  //如果文件夹不存在
  if(_access(filepath,0)!=0)
    //创建文件夹
    res = mkdir(filepath);// 返回 0 表示创建成功,-1 表示失败
    //remove(filename) 删除文件
  else
    res = 1;
  return res;
}

int main()
{
    int flag = fun("d:\\45");
    if(flag==-1)
        printf("创建失败\n");
    else if(flag==0)
        printf("创建成功\n");
    else if(flag==1)
        printf("文件已存在\n");
    return 0;
}
详解 access

头文件:<io.h>

函数原型:int _access(const char *pathname, int mode);

参数:pathname 为文件路径或目录路径 mode 为访问权限(在不同系统中可能用不能的宏定义重新定义)

返回值:如果文件具有指定的访问权限,则函数返回0;如果文件不存在或者不能访问指定的权限,则返回-1.

备注:当pathname为文件时,_access函数判断文件是否存在,并判断文件是否可以用mode值指定的模式进行访问。当pathname为目录时,_access只判断指定目录是否存在,在Windows NT和Windows 2000中,所有的目录都只有读写权限。

mode的值和含义如下所示:

00——只检查文件是否存在

02——写权限

04——读权限

06——读写权限

方法二(一般在mfc中使用)
#include <shlwapi.h>
#pragma comment(lib,"shlwapi.lib")

void fun(char*path)
{
  if (!PathIsDirectory(path))
    ::CreateDirectory(path, NULL); 
    DeleteFile(filename);删除文件
}  
详解 CreateDirectory

CreateDirectory这个函数的作用是创建一个新的目录。如果底层文件系统支持文件和目录上的安全描述,该功能可将指定的安全描述到新的目录。

函数原型:

BOOL CreateDirectory(
  LPCTSTR lpPathName,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

参数:
pPathName:长指针,指向一个空结束的字符串,该字符串指定要创建的目录的路径。有一个默认的字符串大小限制为MAX_PATH字符的路径。此限制是关系到这个函数是如何解析路径。字符串的长度不超过MAX_PATH。

lpSecurityAttributes:忽略,一般设置为NULL。

返回值:
非零表示成功,零表示失败。若想获得更多的错误信息,调用GetLastError函数。

备注:
这个函数不是递归的。它可以在一个路径中创建唯一的最终目录。也就是说,如果父目录或中间目录不存在,该函数将失败并显示错误消息ERROR_PATH_NOT_FOUND。
在调用PathIsDirectory()函数时,需要包含以下头文件与库函数:

#include "shlwapi.h"
#pragma comment(lib,"shlwapi.lib")
  • 6
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我可以为您提供一些 C 语言代码,实现基本的文件管理功能。下面是示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_PATH 1024 void create_file(char *filename) { FILE *fp = fopen(filename, "w"); if (fp == NULL) { printf("Failed to create file: %s\n", filename); } else { printf("File created successfully: %s\n", filename); fclose(fp); } } void create_dir(char *dirname) { int res = mkdir(dirname, 0777); if (res == -1) { printf("Failed to create directory: %s\n", dirname); } else { printf("Directory created successfully: %s\n", dirname); } } void copy_file(char *src, char *dest) { FILE *fp1 = fopen(src, "r"); FILE *fp2 = fopen(dest, "w"); if (fp1 == NULL || fp2 == NULL) { printf("Failed to copy file: %s\n", src); } else { char buffer[1024]; size_t nread; while ((nread = fread(buffer, 1, sizeof(buffer), fp1)) > 0) { fwrite(buffer, 1, nread, fp2); } fclose(fp1); fclose(fp2); printf("File copied successfully: %s -> %s\n", src, dest); } } void copy_dir(char *src, char *dest) { char command[MAX_PATH]; sprintf(command, "cp -r %s %s", src, dest); int res = system(command); if (res == -1) { printf("Failed to copy directory: %s\n", src); } else { printf("Directory copied successfully: %s -> %s\n", src, dest); } } void move_file(char *src, char *dest) { int res = rename(src, dest); if (res == -1) { printf("Failed to move file: %s\n", src); } else { printf("File moved successfully: %s -> %s\n", src, dest); } } void move_dir(char *src, char *dest) { char command[MAX_PATH]; sprintf(command, "mv %s %s", src, dest); int res = system(command); if (res == -1) { printf("Failed to move directory: %s\n", src); } else { printf("Directory moved successfully: %s -> %s\n", src, dest); } } void delete_file(char *filename) { int res = remove(filename); if (res == -1) { printf("Failed to delete file: %s\n", filename); } else { printf("File deleted successfully: %s\n", filename); } } void delete_dir(char *dirname) { char command[MAX_PATH]; sprintf(command, "rm -r %s", dirname); int res = system(command); if (res == -1) { printf("Failed to delete directory: %s\n", dirname); } else { printf("Directory deleted successfully: %s\n", dirname); } } void list_dir(char *dirname) { char command[MAX_PATH]; sprintf(command, "ls -al %s", dirname); system(command); } void view_file(char *filename) { FILE *fp = fopen(filename, "r"); if (fp == NULL) { printf("Failed to open file: %s\n", filename); } else { char buffer[1024]; size_t nread; while ((nread = fread(buffer, 1, sizeof(buffer), fp)) > 0) { fwrite(buffer, 1, nread, stdout); } fclose(fp); } } void modify_permission(char *filename, int mode) { int res = chmod(filename, mode); if (res == -1) { printf("Failed to modify file permission: %s\n", filename); } else { printf("File permission modified successfully: %s\n", filename); } } void search_file(char *filename, char *dirname) { char command[MAX_PATH]; sprintf(command, "find %s -name %s", dirname, filename); system(command); } int main() { char command[1024]; char filename[MAX_PATH]; char dirname[MAX_PATH]; char dest[MAX_PATH]; int mode; while (1) { printf("> "); fgets(command, sizeof(command), stdin); command[strlen(command) - 1] = '\0'; if (strcmp(command, "exit") == 0) { break; } else if (sscanf(command, "create file %s", filename) == 1) { create_file(filename); } else if (sscanf(command, "create directory %s", dirname) == 1) { create_dir(dirname); } else if (sscanf(command, "copy file %s %s", filename, dest) == 2) { copy_file(filename, dest); } else if (sscanf(command, "copy directory %s %s", dirname, dest) == 2) { copy_dir(dirname, dest); } else if (sscanf(command, "move file %s %s", filename, dest) == 2) { move_file(filename, dest); } else if (sscanf(command, "move directory %s %s", dirname, dest) == 2) { move_dir(dirname, dest); } else if (sscanf(command, "delete file %s", filename) == 1) { delete_file(filename); } else if (sscanf(command, "delete directory %s", dirname) == 1) { delete_dir(dirname); } else if (sscanf(command, "list directory %s", dirname) == 1) { list_dir(dirname); } else if (sscanf(command, "view file %s", filename) == 1) { view_file(filename); } else if (sscanf(command, "modify permission %s %o", filename, &mode) == 2) { modify_permission(filename, mode); } else if (sscanf(command, "search file %s %s", filename, dirname) == 2) { search_file(filename, dirname); } else { printf("Invalid command: %s\n", command); } } return 0; } ``` 这段代码实现了基本的文件管理功能,包括创建文件创建文件、复制文件及文件夹、移动文件及文件夹删除文件及文件夹、显示文件夹中的内容、查看文件内容、修改文件权限、搜索文件等。您可以在终端中输入相应的命令,执行相应的操作。例如,输入 `create file test.txt` 可以创建一个名为 `test.txt` 的文件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值