簡(jiǎn)易文件管理系統(tǒng)_第1頁(yè)
簡(jiǎn)易文件管理系統(tǒng)_第2頁(yè)
簡(jiǎn)易文件管理系統(tǒng)_第3頁(yè)
簡(jiǎn)易文件管理系統(tǒng)_第4頁(yè)
簡(jiǎn)易文件管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

system數(shù)據(jù)結(jié)構(gòu)Boot_BLK:引導(dǎo)塊:包括可用Inode,datablock的個(gè)數(shù)Super_BLK:基本塊大小,根inode位置Inode:文件名、塊位置、塊個(gè)數(shù)、創(chuàng)建時(shí)間、文件大小Dir:目錄名、文件名、索引節(jié)點(diǎn)號(hào)….Open_file_table:維護(hù)打開的文件的表N_file:一般文件:文件路徑、內(nèi)容、文件名全局變量File*f:模擬磁盤Boolisnew:該磁盤是新建的還是已存在的各數(shù)據(jù)結(jié)構(gòu)都有一個(gè)全局變量基本函數(shù)voidGET_BLK(void*buf,intblk_no,intsize)獲得塊號(hào)為blk_no的大小為size字節(jié)的內(nèi)容存到buf中,voidPUT_BLK(void*buf,intblk_no)把buf中的數(shù)據(jù)放到blk_no的塊中值得注意:GET要有size,否則會(huì)把整個(gè)塊的數(shù)據(jù)都GET到,buf可能會(huì)爆掉,影響其他變量,出現(xiàn)未知錯(cuò)誤。位圖Datablockbitmap:640個(gè)文件640位80字節(jié)80個(gè)元素的char數(shù)組Inodebitmap:80個(gè)Inode,10字節(jié)10個(gè)元素的char數(shù)組但實(shí)際上我們?nèi)祟愔庇^認(rèn)識(shí)上char[640]和char[80]是更好理解的,因此我們?cè)诔绦蛑幸彩鞘褂眠@種更好理解的方式來(lái)操作要這樣的話就需要一個(gè)轉(zhuǎn)換函數(shù),把char[640]轉(zhuǎn)變成char[80],char[80]轉(zhuǎn)變成char[10],以及反向轉(zhuǎn)換Bit2char():80->640char2bit():640->80例如使用了1、2inode,那么位圖中的第一個(gè)char的Ascii碼應(yīng)為00000011,之后通過(guò)(char)3來(lái)實(shí)現(xiàn)賦值所有操作的前戲(intmain中)FILE*apply_room(char*sys_name)創(chuàng)建磁盤并返回指針里面有一些函數(shù)access,fseek等自己查一下如果是新的(isnew=true)Init()初始化引導(dǎo)塊、超級(jí)塊、兩個(gè)位圖、目錄全局變量d0int*findBLK(char*str,int*inum)找到絕對(duì)路徑為str的文件所占的塊號(hào),把這些塊號(hào)放到一個(gè)數(shù)組里,返回這個(gè)數(shù)組,并且在這個(gè)過(guò)程中把inum賦值為該文件的inode號(hào)中間函數(shù),方便查找一個(gè)文件的。創(chuàng)建文件操作

voidCreateFile(char*str,char*cont)intsplit(chardst[][80],char*str,constchar*spl):把絕對(duì)路徑str以分隔符spl分隔,并把各部分存到dst解析絕對(duì)路徑、判斷文件名長(zhǎng)度692-730行一層一層地找目錄最終找到直接的父目錄PUT_NFILE:找到合適位置與個(gè)數(shù)的塊,更新位圖,把全局變量n_file放進(jìn)去,并返回其inode號(hào)把上邊得到的inode號(hào)與文件名插入直接父目錄(dir_insert函數(shù)),并將更新完的父目錄寫回()打開文件

voidopenfile(char*filename)有沒(méi)有打沒(méi)打開更新全局的table關(guān)閉文件

voidclosefile(char*filename)有沒(méi)有打沒(méi)打開更新刪除文件

voiddelFile(char*str,intmode)Mode=1刪除普通文件mode=2刪除目錄普通和目錄的區(qū)別:刪除前是否要關(guān)閉這個(gè)文件刪除目錄的話目錄里的東西也都找不到了判斷有沒(méi)有更新引導(dǎo)塊和位圖889-921行得到直接父目錄從父目錄中刪除目錄項(xiàng)dir_del寫文件

voidwriteNFile(char*str,char*cont)有沒(méi)有打沒(méi)打開刪除文件delfile()mode=1創(chuàng)建新文件,文件名和內(nèi)容為上面的參數(shù)打開文件讀文件

voidreadFile(char*str)判斷有沒(méi)有判斷打沒(méi)打開解析地址后逐層去找,直到找到這個(gè)文件的inode,從而找到這個(gè)文件占哪些塊,分別讀出內(nèi)容注:實(shí)際上這里復(fù)雜了,findBLK直接就可以返回塊號(hào),實(shí)際上沒(méi)必要下邊寫一堆代碼自己去找的…復(fù)制文件

voidcopyFile(char*dest,char*str)把str路徑的文件復(fù)制到dest路徑的文件中把str路徑的文件讀出來(lái),放到緩沖區(qū)調(diào)用createfile創(chuàng)建即可不一定要和本系統(tǒng)在同一個(gè)文件夾,電腦的任何一個(gè)位置的文件都可以復(fù)制,如d:/test.txtexit不解釋創(chuàng)建目錄文件

voidCreateDir(char*str)解析地址根據(jù)絕對(duì)路徑逐層查找,直到其直接父目錄調(diào)用PUT_DIR把要?jiǎng)?chuàng)建的d0目錄找到合適的塊放進(jìn)去,并返回Inode_num更新其直接父目錄,插入目錄項(xiàng),并將父目錄寫回刪除目錄

delFile()mode=2類似刪除普通文件只不過(guò)不用事先關(guān)文件查看目錄

voidlookdir(ch

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論