版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
操作系統(tǒng)課程設(shè)計摘要經(jīng)過模擬操作系統(tǒng)全部或者部分功效實現(xiàn),加深對操作系統(tǒng)工作原理和操作系統(tǒng)實現(xiàn)方法了解,達(dá)成聯(lián)絡(luò)編程目標(biāo),提升利用理論知識分析問題、處理問題能力,為從事科學(xué)研究和獨立負(fù)擔(dān)計算機(jī)及其應(yīng)用方面工作打好扎實基礎(chǔ)。此次課程設(shè)計采取多道程序設(shè)計方法單用戶操作系統(tǒng),實現(xiàn)了文件管理和菜單接口等功效。本論文主要敘述了經(jīng)過C#編程語言文件管理和用戶接口功效部分實現(xiàn)。著重說明了磁盤分配與回收、文件邏輯結(jié)構(gòu)、目錄結(jié)構(gòu)、菜單接口等部分內(nèi)容。磁盤分配與回收采取位示圖方法,利用顯示鏈接結(jié)構(gòu)中FAT表項實現(xiàn)。磁盤目錄顯示采取是樹形目錄結(jié)構(gòu),經(jīng)過對樹形控件使用實現(xiàn)目錄顯示。文件結(jié)構(gòu)采取是邏輯結(jié)構(gòu)中流式文件。文件物理結(jié)構(gòu)是基于混合索引方式實現(xiàn)。經(jīng)過菜單接口實現(xiàn)了文件創(chuàng)建、刪除、顯示、編輯、復(fù)制、剪切、粘貼和目錄創(chuàng)建、刪除等功效。關(guān)鍵詞:文件管理菜單接口C#磁盤分配與回收文件結(jié)構(gòu)ABSTRACTBysimulatingtherealizationofthefunctionofallorpartoftheoperatingsystem,workingprincipleandoperatingsystemoftheoperatingsystemimplementationmethodofunderstanding,toachievethepurposesofcontactprogramming,improvetheuseoftheoreticalknowledgeanalysisproblem,problem-solvingability,toengageinscientificresearchandindependentworkburdenonthecomputeranditsapplicationtobuildthesolidfoundation.Thecurriculumdesignusingthemethodofmultiprogrammingsingle-useroperatingsystem,realizedthefunctionssuchasfilemanagement,andmenuinterface.Thisthesismainlydescribedbyc#programminglanguagefilemanagementandthefunctionoftheuserinterfaceimplementation.Emphaticallyillustratesthedistributionandrecoveryofdisk,logicstructureoffileanddirectorystructure,menuinterface,etc.Thedistributionandrecoverydiskusingachartmethod,usingshowedthattheFATtableitemofthelinkstructure.Diskdirectorydisplayusingthedirectorytreestructure,throughtheuseoftreecontrolachievetheshowdirectory.Thestructureofthefileisthelogicalstructureofstreamingfiles.Throughthemenuinterfacetorealizethefilestocreate,delete,display,edit,copy,cut,pasteanddirectorytocreate,delete,andotherfunctions..Keywords:Filemanagementmenuinterfacec#ThedistributionandrecoverydiskFilestructure目錄一引言 21.1性質(zhì) 21.2教學(xué)目標(biāo) 21.3任務(wù)和要求 21.4意義 21.5論文結(jié)構(gòu)安排 2二系統(tǒng)分析與設(shè)計 42.1系統(tǒng)要求 42.2實現(xiàn)方法和原理 42.2.1文件邏輯結(jié)構(gòu) 42.2.2文件物理結(jié)構(gòu) 42.2.3目錄結(jié)構(gòu) 52.2.4磁盤狀態(tài) 62.2.5用戶接口 62.3流程圖 72.3.1磁盤分配 72.3.2磁盤償還 72.3.3創(chuàng)建目錄 82.3.4刪除空目錄 102.3.5刪除目錄 102.3.6建立文件 112.3.7刪除文件 122.3.8用戶接口 14三系統(tǒng)實現(xiàn) 143.1磁盤管理 143.2目錄結(jié)構(gòu)實現(xiàn) 173.2.1創(chuàng)建目錄 173.2.2刪除目錄 193.3文件 223.3.1建立文件 223.3.2刪除文件 263.3.3復(fù)制文件 263.3.4剪切文件 273.3.5粘貼文件 273.3.6編輯文件 283.3.6顯示文件 303.4程序中界面 30四結(jié)束語 31參考文件 32一引言1.1介紹操作系統(tǒng)(英語:OperatingSystem,簡稱OS)是管理和控制計算機(jī)硬件與軟件資源計算機(jī)程序,是直接運(yùn)行在“裸機(jī)”上最基本系統(tǒng)軟件,任何其余軟件都必須在操作系統(tǒng)支持下才能運(yùn)行。操作系統(tǒng)是用戶和計算機(jī)接口,同時也是計算機(jī)硬件和其余軟件接口。操作系統(tǒng)功效包含管理計算機(jī)系統(tǒng)硬件、軟件及數(shù)據(jù)資源,控制程序運(yùn)行,改進(jìn)人機(jī)界面,為其它應(yīng)用軟件提供支持等,使計算機(jī)系統(tǒng)全部資源最大程度地發(fā)揮作用,提供了各種形式用戶界面,使用戶有一個好工作環(huán)境,為其它軟件開發(fā)提供必要服務(wù)和對應(yīng)接口。1.2教學(xué)目標(biāo)經(jīng)過模擬操作系統(tǒng)部分功效,即實現(xiàn)對操作系統(tǒng)文件管理,經(jīng)過編程,加深對操作系統(tǒng)工作原理和操作系統(tǒng)實現(xiàn)方法了解,提升學(xué)生編程能力及處理問題能力,為學(xué)生從事科學(xué)研究和獨立負(fù)擔(dān)計算機(jī)及其應(yīng)用方面工作打好扎實基礎(chǔ)。1.3任務(wù)和要求本操作系統(tǒng)文件管理模擬采取多道程序設(shè)計方法單用戶操作系統(tǒng),實現(xiàn)了文件管理和菜單接口。采取位示圖方法對磁盤進(jìn)行分配與回收;利用顯示鏈接結(jié)構(gòu)中FAT表項統(tǒng)計硬盤中關(guān)于文件怎樣被分散存放在不一樣扇區(qū)信息;采取樹形結(jié)構(gòu)顯示目錄結(jié)構(gòu),利用樹形控件實現(xiàn)。文件結(jié)構(gòu)采取邏輯結(jié)構(gòu)中流式結(jié)構(gòu),文件物理結(jié)構(gòu)是基于混合索引方式實現(xiàn)。1.4意義模擬仿真操作系統(tǒng)文件系統(tǒng),便于加深對操作系統(tǒng)了解。經(jīng)過模擬仿真操作系統(tǒng)文件系統(tǒng),鞏固在操作系統(tǒng)理論課堂上所學(xué)知識,加深對操作系統(tǒng)文件系統(tǒng)工作原理認(rèn)識和了解。經(jīng)過此次小學(xué)期課程,熟悉軟件設(shè)計流程,方法以及思想,提升分析設(shè)計以及編程能力。1.5論文結(jié)構(gòu)安排本論文主要闡述四部分內(nèi)容:引言部分,主要對操作系統(tǒng)課程設(shè)計進(jìn)行簡單介紹;系統(tǒng)分析與設(shè)計部分,闡述了每個部分?jǐn)?shù)據(jù)結(jié)構(gòu)以及每個模塊中主要函數(shù)所實現(xiàn)功效并用用流程圖展現(xiàn)各個程序關(guān)系和FAT顯示鏈接結(jié)構(gòu);系統(tǒng)實現(xiàn)部分是模塊實現(xiàn),用代碼和界面細(xì)致描述每個模塊功效;結(jié)束語部分,主要書寫已經(jīng)實現(xiàn)本系統(tǒng)存在不足、改進(jìn)方案和在課程設(shè)計中實際感受。二系統(tǒng)分析與設(shè)計2.1系統(tǒng)要求本系統(tǒng)要求實現(xiàn)文件邏輯結(jié)構(gòu)、文件物理結(jié)構(gòu)、目錄結(jié)構(gòu)、磁盤分配和回收、文件保護(hù)和用戶接口。2.2實現(xiàn)方法和原理本操作系統(tǒng)文件管理經(jīng)過C#實現(xiàn)了文件管理和菜單接口。采取位示圖方法對磁盤進(jìn)行分配與回收;利用顯示鏈接結(jié)構(gòu)中FAT表項統(tǒng)計硬盤中關(guān)于文件怎樣被分散存放在不一樣扇區(qū)信息;采取樹形結(jié)構(gòu)顯示目錄結(jié)構(gòu),利用樹形控件實現(xiàn)。文件結(jié)構(gòu)采取邏輯結(jié)構(gòu)中流式結(jié)構(gòu),文件物理結(jié)構(gòu)是基于混合索引方式實現(xiàn)。2.2.1文件邏輯結(jié)構(gòu)文件邏輯結(jié)構(gòu)采取流式結(jié)構(gòu),它是依次一串字符流組成文件,這種結(jié)構(gòu)操作簡單。文件內(nèi)容均采取文本文件,系統(tǒng)中有兩種文件,一個是存放任意字符文件,一個是可執(zhí)行文件,可執(zhí)行文件內(nèi)容就是系統(tǒng)內(nèi)進(jìn)程程序體。2.2.2文件物理結(jié)構(gòu)文件物理結(jié)構(gòu)采取索引文件,每個文件分配一個索引塊(用來存放索引盤塊)把分配給該文件全部盤塊號都統(tǒng)計在該索引塊中,按照這種分配方式存放文件就是索引文件。因為索引塊就是一個存放許多盤塊號盤塊,所以,為使系統(tǒng)能找到文件存放地址,文件目錄項統(tǒng)計該文件索引塊盤塊號和文件長度。為一個大文件分配磁盤空間時,假如所分配除去盤塊盤塊號,已經(jīng)裝滿一索引塊時,便需再為該文件分配另一個索引塊,用于將以后繼續(xù)分配給該文件盤塊號統(tǒng)計其中,以這類推。同時,應(yīng)為這些索引塊再建立一級索引,即系統(tǒng)再分配一索引塊,作為一級索引塊索引塊,將第一塊、第二塊、第三塊、……索引塊盤塊號寫入此索引塊中,這么便形成了二級索引分配方式,假如文件非常大時候,還能夠用三級、四級索引分配方式。本系統(tǒng)實現(xiàn)二級索引,如圖2-1所表示:圖2-1文件索引分配方式圖2-1文件索引分配方式2.2.3目錄結(jié)構(gòu)目錄結(jié)構(gòu)采取樹形目錄結(jié)構(gòu),根目錄項既能夠表示一個普通文件,也能夠是下一級目錄目錄文件一個說明項,如此層層類推,形成一個樹形層次結(jié)構(gòu),如圖3-3所表示:圖2-2樹形目錄結(jié)構(gòu)uS圖2-2樹形目錄結(jié)構(gòu)uSuSbcElilanxia…abcu2…uSabcHHTabcJ2Y根目錄文件目錄2.2.4磁盤狀態(tài)磁盤分配與回收采取位示圖法,即用一位來表示一塊內(nèi)存物理塊,用一位兩種狀態(tài)來表示物理塊是空閑還是分配。某位為“1”狀態(tài)表示對應(yīng)塊已被占用,為“0”狀態(tài)位對應(yīng)物理塊是空閑塊。磁盤總共有128塊,其中有3塊是系統(tǒng)占用狀態(tài),其余從第三塊開始存放2.2.5用戶接口用戶接口提供菜單接口,文件名中支持絕對路徑路徑名??蓪崿F(xiàn)以下功效:創(chuàng)建文件:create文件名復(fù)制文件:copy源文件名目標(biāo)文件名刪除文件:delete文件名剪切文件:move源文件名目標(biāo)文件名顯示文件:type文件名編輯文件:edit文件名磁盤格式化:format盤符建立目錄:makdir目錄刪除目錄:deldir目錄2.3流程圖接收命令接口命令接收命令接口命令分析并拆分命令磁盤初始化創(chuàng)建目錄移動文件復(fù)制文件刪除文件創(chuàng)建文件刪除目錄編輯文件磁盤格式化開始結(jié)束2.3.1磁盤分配空閑塊分配和回收都是針對專用塊來操作,每分配一塊后,把空閑塊數(shù)減1,但要把一組中第一個空閑塊分配除去之前應(yīng)該把登記在該塊中下一組塊號及塊數(shù)保留到專用快中(原專用塊中信息已經(jīng)無用,因為它指示一組空閑塊都已被分配),如圖2-3所表示:取出第(L+1)單元內(nèi)容取出第(L+1)單元內(nèi)容開始從(L+空閑塊數(shù))單元得到一空閑塊號空閑快數(shù)>1是否查詢L單元內(nèi)容,即專用塊內(nèi)容把該塊分配給申請者空閑塊數(shù)減1其值=0否將該塊內(nèi)容復(fù)制到專用塊是申請失敗把該塊分配給申請者結(jié)束圖2-3分配一個磁盤塊流程圖圖2-3分配一個磁盤塊流程圖2.3.2磁盤償還當(dāng)償還一塊時,只要把償還塊塊號登記到專用塊當(dāng)前組中且將空閑塊數(shù)加1,假如當(dāng)前組已經(jīng)滿10塊,則把專用塊中內(nèi)容寫到償還那塊中,該償還塊作為新組第一塊,如圖2-4所表示:圖2-4償還一個磁盤塊流程圖開始圖2-4償還一個磁盤塊流程圖開始查詢L單元空閑塊數(shù),即專用塊中統(tǒng)計空閑塊數(shù)把專用塊內(nèi)容寫入償還塊中將償還塊號填入專用塊1單元將專用塊0單元置成1結(jié)束空閑塊數(shù)<10是否空閑塊數(shù)+1償還塊號填入(L+空閑塊數(shù))單元2.3.3創(chuàng)建目錄建立目錄首先要找到建立目錄位置(父目錄),然后查找該目錄是否存在,假如父目錄不存在,不能建立,假如存在,查找是否存在同名目錄,存在,不能建立,不存在,則查找一個空目錄項,,為該目錄項申請一個盤塊,并填寫目錄內(nèi)容,如圖2-5所表示:開始開始路徑名為name將name分離成建立文件目錄路徑名pathname和目錄名dname查找pathname找到該目錄?是否制訂目錄不存在,創(chuàng)建目錄失敗結(jié)束在該目錄中找dnamedname目錄已存在?否要創(chuàng)建目錄已經(jīng)存在,創(chuàng)建失敗是結(jié)束目錄中有空白項?申請成功?是申請空閑塊初始化dname目錄項否目錄磁盤已滿,創(chuàng)建失敗結(jié)束是否系統(tǒng)已經(jīng)沒有空閑塊創(chuàng)建失敗將dname目錄添加到樹型目錄中顯示結(jié)束圖2-5創(chuàng)建一個目錄流程圖圖2-5創(chuàng)建一個目錄流程圖2.3.4刪除空目錄刪除空目錄首先要找到該目錄,假如目錄不存在,刪除失敗;假如存在,不過,是非空目錄,顯示不能刪除,操作失敗;若是空目錄,將目錄在樹形目錄和磁盤中刪除,如圖2-6所表示:開始結(jié)束開始結(jié)束在樹形目錄中查找要刪除目錄dname找到目錄dname?是否目錄不存在,刪除失敗結(jié)束dname為空目錄?是否非空目錄,刪除失敗結(jié)束將dname目錄在樹形目錄中刪除將dname目錄項在磁盤中刪除圖2-6刪除空目錄流程圖圖2-6刪除空目錄流程圖2.3.5刪除目錄刪除目錄是在刪除空目錄基礎(chǔ)上增加了刪除非空目錄功效。首先檢驗要刪除目錄是否為空,若為空,調(diào)用刪除空目錄函數(shù),將其刪除;若不為空,次序掃描以該目錄為根節(jié)點子樹,將其孩子節(jié)點依次都刪除,最終調(diào)用刪除空目錄函數(shù),將該目錄刪除,就完成了刪除目錄工作。詳細(xì)流程如圖2-7所表示:開始開始結(jié)束深度優(yōu)先遍歷treeview樹要刪除目錄為空目錄?是否調(diào)用刪除空目錄函數(shù),將其刪除,return結(jié)束調(diào)用刪除空目錄函數(shù),將其刪除為空目錄?是否調(diào)用刪除文件函數(shù),將其刪除要刪除目錄為空目錄?否是調(diào)用刪除文件函數(shù),將其刪除圖2-7刪除非空目錄流程圖圖2-7刪除非空目錄流程圖2.3.6建立文件實現(xiàn)了建立目錄,建立文件就顯得簡單多了,只需要調(diào)用建立目錄函數(shù),建立文件目錄,然后,將該文件插入到打開文件表中就完成了一個文件建立,詳細(xì)流程如圖2-8所表示:開始開始結(jié)束文件打開表已滿?是建立失??!結(jié)束否調(diào)用建立目錄函數(shù),建立目錄建立目錄成功?是否建立失敗!結(jié)束將文件放到打開文件表中圖2-8建立文件流程圖圖2-8建立文件流程圖2.3.7刪除文件次序掃描以該文件為根節(jié)點子樹,將其孩子節(jié)點依次都刪除,最終調(diào)用刪除目錄函數(shù),將該文件目錄刪除,就完成了刪除文件工作。詳細(xì)流程如圖2-9所表示:開始開始結(jié)束在已打開文件表中查找此文件打開文件表有此文件?否是刪除失敗在磁盤中查找此文件磁盤中有此文件?否結(jié)束刪除失敗結(jié)束是調(diào)用刪除目錄函數(shù),將文件目錄刪除將此文件所占用磁盤塊回收圖2-9刪除文件流程圖圖2-9刪除文件流程圖2.3.8用戶接口開始開始結(jié)束接收命令接口命令分析并拆分命令是什么命令?createdeltetecopymoveformatmakdirrdirdeldir創(chuàng)建文件處理程序刪除文件處理程序復(fù)制文件處理程序移動文件處理程序格式化磁盤處理程序建立目錄處理程序刪除空目錄處理程序刪除目錄處理程序圖2-10用戶接口流程圖圖2-10用戶接口流程圖三系統(tǒng)實現(xiàn)3.1磁盤管理(1)經(jīng)過FAT繪制磁盤及磁盤初始化#regionDrawDisk(讀¨FAT畫磁盤)publicvoidDrawDisk(GroupBoxgroupbox,stringharddisk){groupbox.Controls.Clear();FileStreamDisk=newFileStream(harddisk,FileMode.Open);byte[]FAT=newbyte[128];Disk.Seek(0,SeekOrigin.Begin);Disk.Read(FAT,0,128);Disk.Close();PictureBox[]PB=newPictureBox[128];for(inti=0;i<3;i++){PB[i]=newPictureBox();//實例化PB[i].BorderStyle=BorderStyle.Fixed3D;PB[i].BackColor=Color.GreenYellow;PB[i].Size=newSystem.Drawing.Size(15,15);}for(inti=3;i<128;i++){PB[i]=newPictureBox();PB[i].BorderStyle=BorderStyle.Fixed3D;PB[i].Size=newSystem.Drawing.Size(15,15);}intj=0;//初始化picturebox位置intk;intn=0;for(inti=0;i<8;i++){k=0;while(j!=16*(i+1)){PB[j].Location=newSystem.Drawing.Point(17+16*k,21+16*n);j++;k++;}n++;}for(inti=3;i<128;i++){if(FAT[i]!=0){PB[i].BackColor=Color.Blue;}if(FAT[i]==0){PB[i].BackColor=Color.Gray;}}for(inti=0;i<128;i++){groupbox.Controls.Add(PB[i]);}}圖3-1磁盤界面顯示#endregion圖3-1磁盤界面顯示(2)磁盤界面(3)格式化磁盤privatevoid格式磁盤ToolStripMenuItem_Click(objectsender,EventArgse){DialogResultresult=MessageBox.Show("警告:格式化將刪除磁盤上全部數(shù)據(jù)。若想格式化該磁盤,請單擊確定。若想退出,請單擊取消。"格式化當(dāng)?shù)卮疟P",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);if(result==DialogResult.OK){Format("disk2.txt");}OS.FileFunctionnewfile=newOS.FileFunction();newfile.DrawDisk(groupBox3,"disk2.txt");}3.2目錄結(jié)構(gòu)實現(xiàn)圖3-2目錄實現(xiàn)顯示圖3-2目錄實現(xiàn)顯示3.2.1創(chuàng)建目錄(1)創(chuàng)建目錄代碼publicvoidCreateMenu(stringpathname,stringharddisk){intsearchresult=Search(pathname,harddisk);if(searchresult==1){MessageBox.Show("文件路徑不存在,注意",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);return;}elseif(searchresult==0){string[]pnames=pathname.Split(newchar[]{'\\'});//分割路徑stringhalfpathname=pathname.Remove(pathname.Length-4);//去掉最終一個目錄名UTF8Encodingutf=newUTF8Encoding()intdisknum=FindFAT(harddisk);bytedisknumber=Convert.ToByte(disknum);if(halfpathname.Length!=2){if(FindNullItem(Search(halfpathname,harddisk),harddisk)==0)//沒有空目錄MessageBox.Show("目錄已滿¨!");return;}WriteFile(Search(halfpathname,harddisk),FindNullItem(Search(halfpathname,harddisk),harddisk),CreateFCB(utf.GetBytes(pnames[pnames.Length-1]),0,8,disknumber,Convert.ToChar(0)),harddisk);RecordMenuFAT(disknum,harddisk);}else{if(FindNullItem(3,harddisk)==0)//沒有空目錄項{MessageBox.Show("目錄已滿¨!");return;}WriteFile(3,FindNullItem(3,harddisk),CreateFCB(utf.GetBytes(pnames[pnames.Length-1]),0,8,disknumber,Convert.ToChar(0)),harddisk);RecordMenuFAT(disknum,harddisk);}}else{MessageBox.Show("文件路徑不存在,注意",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);return;}(2)創(chuàng)建目錄界面圖3-3目錄創(chuàng)建界面圖3-3目錄創(chuàng)建界面
3.2.2刪除目錄publicvoidDeleteMenu(stringpathname,stringharddisk){if(Search(pathname,harddisk)==1){MessageBox.Show("文件路徑不存在,注意"",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);return;}elseif(Search(pathname,harddisk)==0){MessageBox.Show("文件路徑不存在,注意",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);return;}else{string[]pnames=pathname.Split(newchar[]{'\\','.'});stringhalfpathname=pathname.Remove(pathname.Length-4);intlastdnum=Search(pathname,harddisk);intattribute;byte[]bytename=newbyte[3];UTF8Encodingutf8=newUTF8Encoding();intn=0;for(inti=0;i<8;i++){FileStreamDisk=newFileStream(harddisk,FileMode.Open);Disk.Seek(64*(lastdnum-1)+n,SeekOrigin.Begin);Disk.Read(bytename,0,3);Disk.Seek(1,SeekOrigin.Current);attribute=Disk.ReadByte();if(attribute==8){pathname=pathname+'\\'+utf8.GetString(bytename);Disk.Close();DeleteMenu(pathname,harddisk);}elseif(attribute==2||attribute==3||attribute==4||attribute==5){if(attribute==2||attribute==3){pathname=pathname+'\\'+utf8.GetString(bytename)+".e";Disk.Close();DeleteFile(pathname,harddisk);}else{pathname=pathname+'\\'+utf8.GetString(bytename)+".t";Disk.Close();DeleteFile(pathname,harddisk);}}else{Disk.Close();break;}n=n+8;}intdisknum;if(pnames.Length==2)//c:\aaa{disknum=3;}else{disknum=Search(halfpathname,harddisk);}UTF8Encodingutf=newUTF8Encoding();byte[]name=utf.GetBytes(pnames[pnames.Length-1]);intitem=FindItem(disknum,name,Convert.ToChar(8),harddisk)[0];//目錄項intaddress=FindItem(disknum,name,Convert.ToChar(8),harddisk)[1];//目錄起始盤塊號//byteaddr=Convert.ToByte(address);DeleteFCB(disknum,item,harddisk);//刪除FCBbyte[]delcontent=newbyte[64];for(intk=0;k<64;k++){delcontent[k]=0;}FileStreamDisk1=newFileStream(harddisk,FileMode.Open);Disk2.Seek(64*(address-1),SeekOrigin.Begin);Disk2.Write(delcontent,0,64);Disk2.Seek(address-1,SeekOrigin.Begin);//統(tǒng)計FAT為0Disk2.WriteByte(0);Disk2.Close();}}3.3文件對于文件很多操作,是經(jīng)過掉用目錄操作來完成,這么,就大大降低了文件許多工作。3.3.1建立文件(1)建立文件代碼privatevoid創(chuàng)建文件tToolStripMenuItem_Click(objectsender,EventArgse){OS.Form_CFileformfile=newOS.Form_CFile();DialogResultresult=formfile.ShowDialog();if(result==DialogResult.OK){stringname=formfile.filename;byteattribute=formfile.attribute;byte[]content=formfile.filecontent;stringpathname=GetPathname(treeView1.SelectedNode.FullPath);string[]names=pathname.Split(newchar[]{'\\','.'});stringharddisk="";if(names[0]=="c:"||names[0]=="C:"){harddisk="disk2.txt";}stringfullpathname=pathname+"\\"+name;switch(attribute){case2:case3:fullpathname+=".e";break;case4:case5:fullpathname+=".t";break;}OS.FileFunctionnewfile=newOS.FileFunction();intn=content.Length/64;//文件所需盤塊數(shù)量if(content.Length%64!=0){n=n+1;}int[]disknum=null;if(n==0){disknum=SearchFAT(1,harddisk);}else{disknum=SearchFAT(n,harddisk);//找空盤塊統(tǒng)計盤塊號}if(pathname.Length!=2){if(newfile.Search(pathname,harddisk)==2){MessageBox.Show("不能在文件下建立目錄","注意",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);return;}else{if(n==0)//文件沒有內(nèi)容{if(newfile.Search(fullpathname,harddisk)!=2){newfile.CreateFile(fullpathname,attribute,Convert.ToByte(disknum[0]),Convert.ToChar(1),harddisk);RecordFileFAT(disknum,harddisk);//統(tǒng)計FAT表}else{MessageBox.Show("文件存在!","注意",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);}}else{if(newfile.Search(fullpathname,harddisk)!=2){newfile.CreateFile(fullpathname,attribute,Convert.ToByte(disknum[0]),Convert.ToChar(n),harddisk);RecordFileFAT(disknum,harddisk);//統(tǒng)計文件FAT表項WriteContent(disknum,content,harddisk);//文件內(nèi)容寫入磁盤¨}else{MessageBox.Show("文件存在!","注意",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);}}}}else{if(n==0)//文件沒有內(nèi)容{if(newfile.Search(fullpathname,harddisk)!=2){newfile.CreateFile(fullpathname,attribute,Convert.ToByte(disknum[0]),Convert.ToChar(1),harddisk);RecordFileFAT(disknum,harddisk);//統(tǒng)計FAT表}else{MessageBox.Show("文件存在!","注意"MessageBoxButtons.OK,MessageBoxIcon.Exclamation);}}else{if(newfile.Search(fullpathname,harddisk)!=2){newfile.CreateFile(fullpathname,attribute,Convert.ToByte(disknum[0]),Convert.ToChar(disknum.Length),harddisk);RecordFileFAT(disknum,harddisk);//統(tǒng)計文件FAT表項項?WriteContent(disknum,content,harddisk);//文件內(nèi)容寫入磁盤¨}}}newfile.ReadFile(treeView1,contextMenuStrip1,imageList1);newfile.DrawDisk(groupBox3,"disk2.txt");}if(result==DialogResult.Cancel){}}(2)建立文件界面圖3-4建立文件界面圖3-4建立文件界面3.3.2刪除文件privatevoid刪除文件tToolStripMenuItem_Click_1(objectsender,EventArgse){stringpathname=GetPathname(treeView1.SelectedNode.FullPath);string[]names=pathname.Split(newchar[]{'\\','.'});stringharddisk="";harddisk="disk2.txt";string[]name=pathname.Split(newchar[]{'\\'});OS.FileFunctiondelfile=newOS.FileFunction();if(name[name.Length-1].Length==3){delfile.DeleteMenu(pathname,harddisk);}else{delfile.DeleteFile(pathname,harddisk);}delfile.ReadFile(treeView1,contextMenuStrip1,imageList1);delfile.DrawDisk(groupBox3,"disk2.txt");}3.3.3復(fù)制文件復(fù)制文件是建立在建立文件和保留文件基礎(chǔ)之上基礎(chǔ)之上,首先,依照文件名建立文件,然后將內(nèi)容寫到新建立文件里,就完成了復(fù)制文件功效。privatevoid復(fù)制文件tToolStripMenuItem_Click_1(objectsender,EventArgse){cpathname1=GetPathname(treeView1.SelectedNode.FullPath);flag=1;}3.3.4剪切文件剪切文件又可稱為文件移動,分兩種情況,假如是同盤文件移動,首先,調(diào)用建立目錄函數(shù),建立新文件目錄,然后,將新文件目錄地址項改成被移動文件地址項內(nèi)容,最終,將被移動文件目錄刪除,即完成了文件移動。privatevoid剪切文件tToolStripMenuItem_Click_1(objectsender,EventArgse){cpathname1=GetPathname(treeView1.SelectedNode.FullPath);flag=2;}3.3.5粘貼文件privatevoid粘貼文件ToolStripMenuItem_Click_1(objectsender,EventArgse){cpathname2=GetPathname(treeView1.SelectedNode.FullPath);string[]names1=cpathname1.Split(newchar[]{'\\','.'});string[]names2=cpathname2.Split(newchar[]{'\\','.'});stringharddisk1="";if(names1[0]=="d:"||names1[0]=="D:"){harddisk1="disk2.txt";}OS.FileFunctioncopyfile=newOS.FileFunction();if(flag==2&&string.Equals(names1[0],names2[0]))//盤內(nèi)剪切{copyfile.CutFile(cpathname1,cpathname2,harddisk1);}copyfile.ReadFile(treeView1,contextMenuStrip1,imageList1);copyfile.DrawDisk(groupBox3,"disk2.txt");}3.3.6編輯文件privatevoid編輯ToolStripMenuItem_Click_1(objectsender,EventArgse){found:OS.FileFunctionnewfile=newOS.FileFunction();stringpathname=GetPathname(treeView1.SelectedNode.FullPath);string[]pnames=pathname.Split(newchar[]{'\\','.'});stringharddisk="";if(pnames[0]=="c:"||pnames[0]=="C:"){harddisk="disk2.txt";}if(pathname.Length==2)//在當(dāng)?shù)谻盤編輯-{return;}stringhalfpathname=pathname.Remove(pathname.Length-6);charattribute=Convert.ToChar(pnames[pnames.Length-1]);intdisknum;UTF8Encodingutf=newUTF8Encoding();byte[]name=utf.GetBytes(pnames[pnames.Length-2]);if(pnames.Length==3)//{disknum=3;}else{disknum=newfile.Search(halfpathname,harddisk);}intitem=newfile.FindItem(disknum,name,attribute,harddisk)[0];intaddress=newfile.FindItem(disknum,name,attribute,harddisk)[1];buffer=newfile.ReadFCB(disknum,item,harddisk);//獲取文件FCB信息int[]dnums=FindDiskNumber(buffer.Address,harddisk);//找到文件占用盤塊返回整型數(shù)組FileStreamDisk=n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- (3篇)2024大學(xué)輔導(dǎo)員個人工作總結(jié)
- 教師政治思想及職業(yè)道德方面的考核報告
- 2024年淮南聯(lián)合大學(xué)高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 烏魯木齊市八年級上學(xué)期期末地理試題及答案
- 二零二五年旅游開發(fā)項目合同2篇
- 2024年陜西省婦幼保健院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年河南藝術(shù)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 2024年阜陽市第三人民醫(yī)院阜陽市中心醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年長春市婦產(chǎn)科醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年江西工商職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 健康食品開發(fā)及生產(chǎn)協(xié)議
- 數(shù)字孿生產(chǎn)業(yè)發(fā)展及軌道交通領(lǐng)域的應(yīng)用研究
- 2024年中學(xué)總務(wù)處工作總結(jié)
- 手術(shù)室各級人員培訓(xùn)
- 教育部中國特色學(xué)徒制課題:基于中國特色學(xué)徒制的新形態(tài)教材建設(shè)與應(yīng)用研究
- 2025年護(hù)理質(zhì)量與安全管理工作計劃
- (T8聯(lián)考)2025屆高三部分重點中學(xué)12月第一次聯(lián)考評物理試卷(含答案詳解)
- 工程施工揚(yáng)塵防治教育培訓(xùn)
- 紅薯采購合同模板
- 2023年河南省公務(wù)員錄用考試《行測》真題及答案解析
- 山西省太原市重點中學(xué)2025屆物理高一第一學(xué)期期末統(tǒng)考試題含解析
評論
0/150
提交評論