模拟Linux文件系统含源码及报告


操作系统课程设计 文件系统,已经提供源码及报告,高度模仿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  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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)