91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 6KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-29
  • 語言: 其他
  • 標(biāo)簽: FAT文件??目錄??

資源簡介

用一個(gè)文件虛擬為磁盤,在其上模擬多級(jí)目錄的FAT文件系統(tǒng)。并提供相應(yīng)的用戶操作界面??梢蚤_發(fā)為控制臺(tái)應(yīng)用程序或windows窗體程序。 功能: 實(shí)現(xiàn)基本的目錄和文件的操作。比如,目錄的切換,顯示當(dāng)前路徑,顯示目錄內(nèi)容,目錄和文件的建立、復(fù)制、刪除、重命名,文件內(nèi)容顯示,文件導(dǎo)入(從真實(shí)的文件系統(tǒng)中導(dǎo)入一個(gè)文件存放到該模擬文件系統(tǒng)中),文件的導(dǎo)出(將模擬文件系統(tǒng)中的一個(gè)文件導(dǎo)出到真實(shí)的文件系統(tǒng)中)。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;

#define?MAX_FILE_NAME?16???//?文件名最大長度
#define?INODE_NUM?100??????//?設(shè)備目錄區(qū)中可存放的I節(jié)點(diǎn)的個(gè)數(shù)
#define?BLOCK_NUM?1024?????//?文件區(qū)盤塊數(shù)
#define?BLOCK_SIZE?512?????//?文件盤塊大小
#define?MAX_COMMAND_NUM?10?//?用戶輸入的命令中參數(shù)最多個(gè)數(shù)
#define?MAX_COMMAND_LENGTH?20??//?用戶輸入命令的每個(gè)參數(shù)的最大長度

//數(shù)據(jù)結(jié)構(gòu)定義
struct?VolumeInfo
{
long?iNodeTableAddress;??//設(shè)備目錄表地址
long?fatTableAddress;????//fat表地址
long?dataAreaAddress;????//數(shù)據(jù)表地址
long?totalSpace;?????????//總空間
long?usedBlock;??????????//占用塊數(shù)
long?leftSpace;??????????//剩余空間
};

struct?INode
{
long?index;????????//索引號(hào)
int?type;??????????//文件類型,0為目錄,1為文件,-1是空閑
long?address;??????//fat表區(qū)
long?size;?????????//文件大小
};

struct?Fat
{
long?nextAddress;??//塊鏈中下一塊是否存在,為-2表空閑,否則表占用
};

struct?FileIndex
{
char?name[MAX_FILE_NAME];?????//文件名
long?iNodeIndex;??????????????//索引號(hào)
};

//全局變量
int?fd;?????????????????????????????????????????????????//模擬文件系統(tǒng)的文件的文件描述符
VolumeInfo?volumeInfo;???????????????????????????????????//盤卷總信息
char?command[MAX_COMMAND_NUM][MAX_COMMAND_LENGTH];??????//存放用戶輸入的命令的字符串?dāng)?shù)組
int?commandNum;?????????????????????????????????????????//用于存放用戶輸入的命令的參數(shù)個(gè)數(shù)
INode?currentINode;?????????????????????????????????????//用戶當(dāng)前目錄的描述信息
char?name[MAX_FILE_NAME][MAX_FILE_NAME];????????????????//當(dāng)前路徑

//顯示命令提示符,并接受用戶輸入的命令
void?getCommand()
{
//處理用戶輸入的命令,放入command二維數(shù)組中
char?commandChar;????
int?commandLength;???//命令長度
commandNum?=?0;??????//命令個(gè)數(shù)????
commandLength?=?0;

while(1)
{
cout?< cin?>>?commandChar;???????
while(commandChar?!=?‘\n‘)???//若輸入不為換行
{
if(commandChar?==?‘?‘)????//若輸入空格
{
if(commandLength?!=?0)??//若命令長度不為0
{
command[commandNum][commandLength]?=?‘\0‘;?????//參數(shù)輸入結(jié)束
commandNum++;??????????????????????????????????//進(jìn)入下一個(gè)參數(shù)
commandLength?=?0;?????????????????????????????//置下一個(gè)參數(shù)長度為0
}
commandChar?=?getchar();??????
continue;??????????????????//進(jìn)入下一次循環(huán)
}

else?????????//若輸入不為空格
{
command[commandNum][commandLength]?=?commandChar;???//將字符放入二維數(shù)組
commandLength++;????
}
commandChar?=?getchar();?
}
command[commandNum][commandLength]?=?‘\0‘;??//最后一個(gè)參數(shù)輸入結(jié)束
if(commandLength?>?0?)?????//如果長度大于0
commandNum++;??????//進(jìn)入新的存儲(chǔ)字符區(qū)域
if(commandNum?!=?0)????????//如果命令參數(shù)不為0
break;?????????????//退出循環(huán)
}
}???

//清屏
void?vfs_clear()
{
system(“cls“);
}

//根據(jù)INode索引寫入INode
void?setINode(INode*?pINodelong?index)
{
pINode->index?=?index;
lseek(fdvolumeInfo.iNodeTableAddress?+?index?*?sizeof(INode)SEEK_SET);
write(fdpINodesizeof(INode));
}
//格式化
void?vfs_format()
{
int?i?=?0;
name[10][MAX_FILE_NAME]?=?0;
lseek(fd0SEEK_SET);??//移動(dòng)文件讀寫指針到虛擬文件系統(tǒng)的開始處
//初始化盤卷總信息
volumeInfo.iNodeTableAddress?=?sizeof(VolumeInfo);??????
volumeInfo.fatTableAddress?=?volumeI

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件??????27108??2009-12-11?11:23??fat1.cpp

-----------?---------??----------?-----??----

????????????????27108????????????????????1


評(píng)論

共有 條評(píng)論

相關(guān)資源