资源简介
包括实验题目,代码及运行结果
实验8 文件管理(2学时)
一、实验目的
理解文件系统的主要概念及文件系统内部功能和实现过程。
二、实验内容
采用二级文件目录结构,编写程序实现文件系统的文件存储空间的管理、文件的物理结构、目录结构管理和文件操作。
三、实验要求
1、设计一个有m个用户的文件系统,每个用户最多可保存一个文件。
2、规定用户在一次运行中只能打开K个文件。
3、系统能检查键入命令的正确性,出错时应能显示出错原因。
4、对文件应能设置保护措施,如只能执行、允许读、允许写等。
5、对文件的操作设计提供一套文件操作:
CREATE建立文件;
DELETE删除文件;
OPEN打开文件;
CLOSE关闭文件;
READ读文件;
WRITE写文件。
6、二级目录结构如下图所示。
用户名 用户文件目录地址
主文件目录MFD
文件名 状态(打开/建立) 指针
用户文件目录UFD
实验8 文件管理(2学时)
一、实验目的
理解文件系统的主要概念及文件系统内部功能和实现过程。
二、实验内容
采用二级文件目录结构,编写程序实现文件系统的文件存储空间的管理、文件的物理结构、目录结构管理和文件操作。
三、实验要求
1、设计一个有m个用户的文件系统,每个用户最多可保存一个文件。
2、规定用户在一次运行中只能打开K个文件。
3、系统能检查键入命令的正确性,出错时应能显示出错原因。
4、对文件应能设置保护措施,如只能执行、允许读、允许写等。
5、对文件的操作设计提供一套文件操作:
CREATE建立文件;
DELETE删除文件;
OPEN打开文件;
CLOSE关闭文件;
READ读文件;
WRITE写文件。
6、二级目录结构如下图所示。
用户名 用户文件目录地址
主文件目录MFD
文件名 状态(打开/建立) 指针
用户文件目录UFD
代码片段和文件信息
#include
#include
#include
#include
using namespace std;
struct MFD{ // 主文件目录
string u_name; // 用户名
int addr; // 指向子目录指针
}mfd[10];
int mfdcnt; // 用户数
int k; // 每个用户最多打开的文件数
struct File{
string name; // 文件名
bool exist; // 0表示文件已经删除,1表示文件存在
bool state; // 0表示文件处于关闭状态,1表示打开状态
int protect; // 1表示只执行,2表示只读,3表示只写,4表示可读可写
string content; // 文件内容
void create();
void del();
bool open();
bool close();
void read();
void write();
};
struct UFD{ // 用户文件目录
File file[1000];
string u_name; // 用户名
int id; // 文件的总数
int cnt; // 用户文件存在的个数
int open_cnt; // 用户打开文件个数,最大为k
void init() { cnt=0; open_cnt=0; id=0;}
void create() { file[id].create(); cnt++; id++;}
void del(int pos) { file[pos].del(); cnt--;}
void open(int pos) {
if(open_cnt == k) cout<<“您已经打开了“< else {
if(file[pos].open() == 1) open_cnt++;
}
}
void close(int pos) { if(file[pos].close() == 1) open_cnt--; }
void read(int pos) { file[pos].read(); }
void write(int pos) { file[pos].write(); }
int Find(string name) {
int pos = -1; // 需要操作文件的位置
for(int i=0; i if(file[i].exist==1 && file[i].name==name) return pos=i;
cout << “找不到该文件,请检查文件名\n“;
return pos;
}
}ufd[10];
void see(string u_name){
int addr = -1;
for(int i=0; i if(mfd[i].u_name == u_name) addr = mfd[i].addr;
}
if(addr == -1) { cout << “没有该用户“ << endl;}
else{
UFD user = ufd[addr];
cout << “********************用户名“ << u_name << “********************\n“;
cout << “文件个数: “ << user.cnt << “\t文件打开数: “ << user.open_cnt << endl;
cout << “文件名\t文件状态\t文件权限\t文件内容\n“;
for(int i=0; i File f = user.file[i];
if(f.exist == 0) continue;
cout << f.name << “\t“;
if(f.state == 0) cout << “关闭\t\t“;
else cout << “打开\t\t“;
if(f.protect == 1) cout << “只执行\t\t“;
else if(f.protect == 2) cout << “只读\t\t“;
else if(f.protect == 3) cout << “可写\t\t“;
cout << f.content << endl;
}
cout << “*************************************************\n“;
}
}
void File::create(){
cout << “请输入文件名与文件权限(1只执行 2只读 3可写): “; cin >> name >> protect;
cout << “请输入文件内容: “; cin >> content;
exist = 1;
state = 0;
}
void File::del(){
exist = 0;
}
bool File::open(){
if(protect == 1) { cout << “打开失败,该文件为只执行文件!“ << endl; return 0;}
else if(state == 1) { cout << “该文件已处于打开状态“ << endl; return 0;}
else { state = 1; cout << “打开成功“ << endl; return 1;}
}
bool File::close(){
if(state == 0) { cout << “该文件已处于关闭状态“ << endl; return 0;}
else { state = 0; cout << “关闭成功“ << endl; return 1;}
}
void File::read(){
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5170 2018-06-13 20:36 main.cpp
文件 35840 2018-06-13 15:08 实验题目8.doc
文件 124818 2018-06-13 20:40 新建 Microsoft Word 文档.docx
- 上一篇:操作系统实验五 内存管理
- 下一篇:科东纵加客户端软件
相关资源
- 操作系统实验五 内存管理
- 操作系统实验四 设备管理
- 操作系统实验一: 进程调度
- CODESYS之创建一个库.docx
- CODESYS运动控制之SMC_Interpolator.docx
- 一个shellcode作用是添加Windows用户
- Codecs33-Sunblime Text
- 字符编码转换,utf16 utf8 ascii unicode
- SAP FICO 常用事务代码TCODE
- Helix AAC Decoder源码及官方文档
- 基于OpenCV的多种条形码识别算法
- FPGA JPEG Verilog Source code 源代码
- codewarrior V6.2全功能license
- codejock Demo
- arduino_code.rar
- Qt条码生成器
- RS485芯片ESD ±20kV 速率高达10MBPS 性价
- PB版 code128 条形码 图片生成
- microchip PIC24F Code Examples
- 非局部均值滤波器
- GB∕T 38662-2020 物联网标识体系 Ecode标
- Qt Thread code
- xilinx vivado xadc IP core code
- Code Alignment
- CodeSnitch破解版,支持WINCE6.0
- 汇编做模拟计算器ASM文件
- codelock指纹门禁系统.rar
- code.zip
- QRCODE 单片机实现二维码显示60539
- stm32f103zet6液晶显示实验
评论
共有 条评论