-
大小: 1005KB文件类型: .zip金币: 2下载: 0 次发布日期: 2023-10-23
- 语言: 其他
- 标签: os FileSystem
资源简介
操作系统课程设计 文件系统,已经提供源码及报告,高度模仿Linux命令行

代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include“FileSystem.h“
using namespace std;
extern int disk_empty=20480; //全局变量虚拟磁盘空闲空间大小20M
string error[] = {“/““\\“ “:““<““>““|““*““&“} ; //命名中的非法字符
FileSystem::FileSystem() {
size = 0;
currentDir = NULL;
copytempfile = NULL;
copytempdir = NULL;
}
FileSystem::~FileSystem() {
disk_empty += size; //释放用户所占空间
size = 0; // 置0
MyDir *d = root;
MyFile *f = currentDir->filePtr;
while (f != 0) {
if (f->nextFile == 0) {
this->dele_file(f);
f = 0;
break;
}
while (f->nextFile->nextFile != 0)
f = f->nextFile;
this->dele_file(f->nextFile);
f->nextFile = 0;
f = currentDir->filePtr;
}
while (d != 0) {
if (d->nextDir == 0) {
this->dele_dir(d);
d = 0;
break;
}
while (d->nextDir->nextDir != 0)
d = d->nextDir;
this->dele_dir(d->nextDir);
d->nextDir = 0;
d = root;
}
}
int FileSystem::newFile() {
MyFile *p = NULL;
p = new MyFile;
if (p == 0) {
cout << “CREATE -FALSE“;
return 0;
}
cin>>p->name ;
//=====================
MyDir *d = currentDir->dirPtr;
if (d != NULL) {
while (d != NULL) {
string dtemp(d->name);
string ftemp(p->name);
if(dtemp == ftemp){
cout << “RENAME -FALSE“< return 0;
}
d = d->nextDir;
}
}
//=====================
/*命名检测*/
string tempname(p->name) ;
for(int i = 0 ;i< 8 ;++i)
{
if(tempname.find(error[i]0)!=string::npos)//从字符串的下标为0处开始查找error[i]如果没找到,返回一个特别的标志c++中用npos表示
{
cout << “RENAME -FALSE“< return 0 ;
}
}
/*创建时候情况如下
* 1. 目录下没有文件
* 2. 目录下有文件,新文件命名冲突
* 3. 目录下有文件,新文件无命名冲突
* */
/*检测有无同名函数*/
if (currentDir->filePtr == NULL) {
p->nextFile = currentDir->filePtr;
currentDir->filePtr = p;
} else {
MyFile *q = new MyFile;
q = currentDir->filePtr;
while (q != NULL) {
if (strcmp(p->name q->name)==0) {
cout << “FILE EXISTS -FALSE“ << endl;
return 0;
}
q = q->nextFile;
}
/*重置链表结构*/
p->nextFile = currentDir->filePtr;
//p->size=0;
currentDir->filePtr = p;
MyDir *h = currentDir;
/*更改上级目录的大小*/
while (h != NULL) {
h->size += p->size;
h = h->preDir;
}
}
currentDir->filePtr->size = 0;
cout <<“CREATE -OK“ << endl;
disk_empty = disk_empty - p->size;
size += p->size;
return 1;
}
int FileSystem::newDir(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 789 2017-12-11 23:35 makefile
目录 0 2017-12-23 14:42 nvfs\
文件 16264 2017-12-23 14:36 nvfs\FileSystem.cpp
文件 2086 2014-01-10 22:35 nvfs\FileSystem.h
文件 10515 2017-12-23 01:10 nvfs\Interface.cpp
文件 61 2014-01-10 22:35 nvfs\Interface.h
目录 0 2017-12-22 17:05 nvfs\bin\
目录 0 2017-12-23 14:37 nvfs\bin\Debug\
文件 1136178 2017-12-23 14:37 nvfs\bin\Debug\nvfs.exe
文件 84 2017-12-22 19:12 nvfs\main.cpp
文件 1204 2017-12-22 17:18 nvfs\nvfs.cbp
文件 592 2017-12-23 14:39 nvfs\nvfs.depend
文件 1107 2017-12-23 14:42 nvfs\nvfs.layout
目录 0 2017-12-22 17:05 nvfs\obj\
目录 0 2017-12-23 14:37 nvfs\obj\Debug\
文件 55294 2017-12-23 14:37 nvfs\obj\Debug\FileSystem.o
文件 44314 2017-12-23 14:14 nvfs\obj\Debug\Interface.o
文件 9822 2017-12-23 14:14 nvfs\obj\Debug\main.o
文件 777964 2017-12-23 14:48 操作系统课程设计.doc
文件 108 2017-12-23 14:45 说明.txt
相关资源
- OSG 72集视频教程和资料140620
- Microsoft Forms 2.0107770
- AXURE移动端素材元件库68580
- Rational Rose Common破解文件
- ddos压力测试工具99657
- 双木三林_XMOS driver V4.6
- 联想H61主板BIOS升级F9KT58AUS支持22NM.i
- photoshop经典1000例
- Eeupdate.exe
- AMIDEDOS AMI
- Reparatory Effects of Nicotine on NMDA Recepto
- Apolipoprotein E4 Impairs in vivo Hippocampal
- Histamine excites rat lateral vestibular nucle
- Diltiazem augmented pentobarbital-induced LORR
- Lenovo Z460 SLIC2.1 LENOVO-29CN38WW(V2.15)
- 联想G400G500G490BIOS
- Fabrication and all-optical poling characteris
- Rtx51_tiny_RTOS中文版.pdf
- Micrium.RTOS.1.0.0.pack
- ASUS BIOS 加NVME协议文件: Nvme.ffs NV
- 易语言post提交示例
- Phoenix BIOS Editor.rar
- DOS播放器 QuickViewPro破解版
- HP笔记本BIOS丢失解决方法,DMI TOOLK
- Y450 BIOS白名单
- nachos-lab 02
- BIOS修改工具DMI236
- CMOS两级运算放大器设计指导
- windows下制作macOS安装U盘,绝对简单好
- virtuoso实例教学
评论
共有 条评论