模拟Linux文件系统含源码及报告
操作系统课程设计 文件系统,已经提供源码及报告,高度模仿Linux命令行
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 789 2017-12-11 23:35 makefile
目录 0 2017-12-23 14:42 nvfs
文件 16264 2017-12-23 14:36 nvfsFileSystem.cpp
文件 2086 2014-01-10 22:35 nvfsFileSystem.h
文件 10515 2017-12-23 01:10 nvfsInterface.cpp
文件 61 2014-01-10 22:35 nvfsInterface.h
目录 0 2017-12-22 17:05 nvfsin
目录 0 2017-12-23 14:37 nvfsinDebug
文件 1136178 2017-12-23 14:37 nvfsinDebug
vfs.exe
文件 84 2017-12-22 19:12 nvfsmain.cpp
文件 1204 2017-12-22 17:18 nvfs
vfs.cbp
文件 592 2017-12-23 14:39 nvfs
vfs.depend
文件 1107 2017-12-23 14:42 nvfs
vfs.layout
目录 0 2017-12-22 17:05 nvfsobj
目录 0 2017-12-23 14:37 nvfsobjDebug
文件 55294 2017-12-23 14:37 nvfsobjDebugFileSystem.o
文件 44314 2017-12-23 14:14 nvfsobjDebugInterface.o
文件 9822 2017-12-23 14:14 nvfsobjDebugmain.o
文件 777964 2017-12-23 14:48 操作系统课程设计.doc
文件 108 2017-12-23 14:45 说明.txt
#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 nvfsFileSystem.cpp
文件 2086 2014-01-10 22:35 nvfsFileSystem.h
文件 10515 2017-12-23 01:10 nvfsInterface.cpp
文件 61 2014-01-10 22:35 nvfsInterface.h
目录 0 2017-12-22 17:05 nvfsin
目录 0 2017-12-23 14:37 nvfsinDebug
文件 1136178 2017-12-23 14:37 nvfsinDebug
vfs.exe
文件 84 2017-12-22 19:12 nvfsmain.cpp
文件 1204 2017-12-22 17:18 nvfs
vfs.cbp
文件 592 2017-12-23 14:39 nvfs
vfs.depend
文件 1107 2017-12-23 14:42 nvfs
vfs.layout
目录 0 2017-12-22 17:05 nvfsobj
目录 0 2017-12-23 14:37 nvfsobjDebug
文件 55294 2017-12-23 14:37 nvfsobjDebugFileSystem.o
文件 44314 2017-12-23 14:14 nvfsobjDebugInterface.o
文件 9822 2017-12-23 14:14 nvfsobjDebugmain.o
文件 777964 2017-12-23 14:48 操作系统课程设计.doc
文件 108 2017-12-23 14:45 说明.txt
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)