用C语言实现一个简单的文件系统,包括实现文件的建立、打开、删除、关闭、复制、读、写、查询等功能,并用C语言写出简易代码
时间: 2023-10-20 09:07:36 浏览: 260
以下是一个简单的文件系统的C语言实现,包括文件的建立、打开、删除、关闭、复制、读、写、查询等功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_FILE_NUM 100 // 文件数量上限
#define MAX_FILE_SIZE 1024 // 文件大小上限
// 文件结构体
typedef struct {
char name[20]; // 文件名
int size; // 文件大小
char content[MAX_FILE_SIZE]; // 文件内容
} File;
File fileSystem[MAX_FILE_NUM]; // 文件系统
int fileNum = 0; // 文件数量
// 创建文件
void createFile(char* name, char* content, int size) {
if (fileNum >= MAX_FILE_NUM) {
printf("文件数量已达上限,无法创建新文件。\n");
return;
}
if (size > MAX_FILE_SIZE) {
printf("文件大小超过限制,无法创建新文件。\n");
return;
}
// 检查文件名是否重复
for (int i = 0; i < fileNum; i++) {
if (strcmp(fileSystem[i].name, name) == 0) {
printf("文件名已存在,无法创建新文件。\n");
return;
}
}
// 创建新文件
File newFile;
strcpy(newFile.name, name);
strcpy(newFile.content, content);
newFile.size = size;
fileSystem[fileNum] = newFile;
fileNum++;
printf("文件创建成功。\n");
}
// 打开文件
int openFile(char* name) {
for (int i = 0; i < fileNum; i++) {
if (strcmp(fileSystem[i].name, name) == 0) {
printf("文件打开成功。\n");
return i;
}
}
printf("文件不存在,无法打开。\n");
return -1;
}
// 删除文件
void deleteFile(char* name) {
for (int i = 0; i < fileNum; i++) {
if (strcmp(fileSystem[i].name, name) == 0) {
// 删除文件,将后面的文件依次向前移动
for (int j = i; j < fileNum - 1; j++) {
fileSystem[j] = fileSystem[j + 1];
}
fileNum--;
printf("文件删除成功。\n");
return;
}
}
printf("文件不存在,无法删除。\n");
}
// 关闭文件
void closeFile() {
printf("文件已关闭。\n");
}
// 复制文件
void copyFile(char* name, char* newName) {
for (int i = 0; i < fileNum; i++) {
if (strcmp(fileSystem[i].name, name) == 0) {
if (fileNum >= MAX_FILE_NUM) {
printf("文件数量已达上限,无法复制文件。\n");
return;
}
// 检查新文件名是否重复
for (int j = 0; j < fileNum; j++) {
if (strcmp(fileSystem[j].name, newName) == 0) {
printf("文件名已存在,无法复制文件。\n");
return;
}
}
// 复制文件
File newFile;
strcpy(newFile.name, newName);
strcpy(newFile.content, fileSystem[i].content);
newFile.size = fileSystem[i].size;
fileSystem[fileNum] = newFile;
fileNum++;
printf("文件复制成功。\n");
return;
}
}
printf("原文件不存在,无法复制文件。\n");
}
// 读文件
void readFile(int index) {
printf("文件内容为:%s\n", fileSystem[index].content);
}
// 写文件
void writeFile(int index, char* content) {
strcpy(fileSystem[index].content, content);
printf("文件内容已更新。\n");
}
// 查询文件
void queryFile() {
printf("文件列表如下:\n");
for (int i = 0; i < fileNum; i++) {
printf("%s\n", fileSystem[i].name);
}
}
int main() {
createFile("file1", "this is file1 content.", 24);
createFile("file2", "this is file2 content.", 24);
createFile("file3", "this is file3 content.", 24);
queryFile();
int fileIndex = openFile("file2");
readFile(fileIndex);
writeFile(fileIndex, "this is new file2 content.");
readFile(fileIndex);
copyFile("file1", "newFile1");
queryFile();
deleteFile("file3");
queryFile();
closeFile();
return 0;
}
```
以上代码实现了简单的文件系统,包括创建文件、打开文件、删除文件、关闭文件、复制文件、读文件、写文件、查询文件等功能。可以通过调用相应函数来实现这些操作。
阅读全文