首先建立文件 我們要建立一個文件“\子目錄l\file.Txt”,假設目錄“子目錄l”已經存在于根目錄下。要建立的文體大小為7000個字節,每簇大小4096個字節。
步驟1:讀取文件系統*一個扇區的引導扇區.獲取簇大小、MFT起始位置以及每個MFT項的大小。
步驟2:讀取*一個MFT項,即$MFT文件的MFT項,由它的$DATA屬性獲取其他MFT的位置。
步驟3:首先為準備新建的文件建立MFT項一訪問SMFT文件的$BITMAP屈性,找到一個未分配的項。*一個空閑項為400號,把它分配給新文件,并將$BITMAP中的相應位置置為1。
步驟4:初始化MFT項——跳轉400號MFT項的位置,將其中的內容清除。建立標準信息屬性($STANDARD_INFORMATION)和文件名屬性($FILE_NAME),時間值設置為當前時間。在MFT項頭中設置使用中標記。
步驟5:下面需要從使用6號MFT項的$Bitmap文件中為文件的$DATA屬性尋找并分配兩個簇,因為文件需要兩個簇的空間。使用*佳分配策略找到兩個連續的空閑簇722和723號簇,將其相應的bit設置為1。將文件內容寫入簇中,更新$DATA屬性中的簇地址。修改了MFT項,所以更新文件的*后修改時間值。
步驟6:下一步將其中間文件名項。訪問使用5號MFT項的根目錄,定位“子目錄1”.讀取索引跟屬性($INDEX_ROOT)和索引分配屬性($INDEX_ALLOCATION),在倒置樹中分類尋找,找到“子目錄1”的索引項,它的MFT項地址為200,更新目錄的*后訪問時間。
步驟7:跳轉到200號MFT項,訪問它的索引根屬性($INDEX_ROOT),尋找將為file.txt分配的空間。為其建立一個新的索引項,重新對倒置樹進行分類。新索引項的文件參考號地址是400號MFT項。設置相應的時間值和標志。更新目錄的*后寫入、*后修改、*后訪問時間值。
步驟8:在前面的每一步中,在文件系統日志中建立項并將改變記入$extend$usrrnl,如果設置了配額管理,新文件的大小將記入用戶的配額中($extemd$quota)。
歡迎咨詢http://www.jysjhf.com/ |
|