好的,我可以为您提供一些 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` 的文件。