linux下基于内存的虚拟文件系统设计与实现内容摘要:

thisroot[i] = new dir()。 thischosefile =。 thisfileImg = new QPixmap(:/)。 FILE* fp。 fp = fopen(system,rb)。 char data[1024*16]。 if(fp != NULL) { fread(amp。 thistotaldmem,sizeof(float),1,fp)。 fread(amp。 thisfreemem,sizeof(float),1,fp)。 fread(amp。 thisoccupyblocknum,sizeof(int),1,fp)。 bool isoccupied。 int blocknum。 int nextblock。 for(int i = 0。 i1024*16。 i++) { fread(amp。 data,1024*16*sizeof(char),1,fp)。 fread(amp。 blocknum,sizeof(int),1,fp)。 fread(amp。 isoccupied,sizeof(bool),1,fp)。 fread(amp。 nextblock,sizeof(int),1,fp)。 strcpy(thismemory[i]data,data)。 thismemory[i]setblocknum(blocknum)。 thismemory[i]setisoccupied(isoccupied)。 thismemory[i]setnextblock(nextblock)。 } QFile dirfileId(dirfileId)。 (QIODevice::ReadOnly | QIODevice::Text)。 QTextStream in(amp。 dirfileId)。 QString fileId,parentId,childId。 fp = fopen(dirintdata,rb)。 int firstblock。 int occupyblocks。 thisfilenum = 0。 for(int i = 0。 i 1024。 i++) { infileId。 if(fileId != 1) filenum++。 inparentId。 inchildId。 thisroot[i]setfileId(fileId)。 thisroot[i]setparentId(parentId)。 thisroot[i]setchildId(childId)。 fread(amp。 firstblock,sizeof(int),1,fp)。 fread(amp。 occupyblocks,sizeof(int),1,fp)。 thisroot[i]setfirstblock(firstblock)。 thisroot[i]setoccupyblocks(occupyblocks)。 } } else { thisfilenum = 0。 thistotaldmem = 1024*256。 thisfreemem = thistotaldmem。 thisoccupyblocknum = 0。 } uilabel_filenumsetText(tr(%1).arg(filenum))。 uiHInfoButtonhide()。 uifileInButtonhide()。 uifileOutButtonhide()。 image =QImage(800,600,QImage::Format_ARGB32)。 (qRgb(255,255,255))。 paint(image)。 } //存储数据函数,其中保存各个块以及目录数据中的各项数据 void Widget::savadata() { FILE *fp。 fp = fopen(system,wb)。 fwrite(amp。 thistotaldmem,sizeof(float),1,fp)。 fwrite(amp。 thisfreemem,sizeof(float),1,fp)。 fwrite(amp。 thisoccupyblocknum,sizeof(int),1,fp)。 int blocknum,nextblock。 bool isoccupied。 for(int i = 0。 i1024*16。 i++) { blocknum = thismemory[i]getblocknum()。 isoccupied = thismemory[i]getisoccupied()。 nextblock = thismemory[i]getnextblock()。 fwrite(amp。 thismemory[i]data,1024*16*sizeof(char),1,fp)。 fwrite(amp。 blocknum,sizeof(int),1,fp)。 fwrite(amp。 isoccupied,sizeof(bool),1,fp)。 fwrite(amp。 nextblock,sizeof(int),1,fp)。 } fp = fopen(dirintdata,wb)。 QFile dirfileId(dirfileId)。 if(!(QIODevice::WriteOnly | QIODevice::Text)) return。 QTextStream in(amp。 dirfileId)。 QString fileId,parentId,childId。 int firstblock,occupyblocks。 for(int i = 0。 i 1024。 i++) { fileId = thisroot[i]getfileId()。 parentId = thisroot[i]getparentId()。 childId = thisroot[i]getchildId()。 infileIdendl。 inparentIdendl。 inchildIdendl。 firstblock = thisroot[i]getfirstblock()。 occupyblocks = thisroot[i]getoccupyblocks()。 fwrite(amp。 firstblock,sizeof(int),1,fp)。 fwrite(amp。 occupyblocks,sizeof(int),1,fp)。 } } //隐藏文件操作按钮 void Widget::hidefileOpButton() { uifilemodifyButtonhide()。 uifilecopyButtonhide()。 // uifilemoveButtonhide()。 uifiledeleteButtonhide()。 uifilerenameButtonhide()。 } //显示各类文件操作按钮 void Widget::showfileOpButton() { uifilemodifyButtonshow()。 uifilecopyButtonshow()。 // uifilemoveButtonshow()。 uifiledeleteButtonshow()。 uifilerenameButtonshow()。 } //画窗体的背景 void Widget::paint(QImage amp。 image) { float freepercent=(thistotaldmemthisfreemem)/thistotaldmem。 QPainter painter(amp。 image)。 (Qt::red)。 (Qt::NoPen)。 (50,100,100,100,0,360*16*freepercent)。 /*6/10)。 */ (Qt::blue)。 (50,100,100,100,360*16*freepercent,360*16360*16*freepercent)。 (Qt::blue)。 (60,220,tr(空闲 ))。 (Qt::red)。 (150,120,tr(已用 ))。 QString string。 string= tr(%1).arg(thistotaldmem)。 string = string + KB。 uitotalnumsetText(string)。 string = tr(%1).arg(thisfreemem)。 string = string + KB。 uifreenumsetText(string)。 } //画图函数 void Widget::paintEvent(QPaintEvent *) { QPainter paint(this)。 (1,1)。 (0,0,thisimage)。 } //设置与文件绑定的控件的信息 void Widget::setfileIconButton() { thischosefile =。 uifileIconButton1setIcon(QIcon(:/))。 uifileIconButton1setIconSize(QSize(40,40))。 uifileIconButton2setIcon(QIcon(:/))。 uifileIconButton2setIconSize(QSize(40,40))。 uifileIconButton3setIcon(QIcon(:/))。 uifileIconButton3setIconSize(QSize(40,40))。 uifileIconButton4setIcon(QIcon(:/))。 uifileIconButton4setIconSize(QSize(40,40))。 uifileIconButton5setIcon(QIcon(:/))。 uifileIconButton5setIconSize(QSize(40,40))。 uifileIconButton6setIcon(QIcon(:/))。 uifileIconButton6setIconSize(QSize(40,40))。 uifileIconButton7setIcon(QIcon(:/))。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。