樹的訪問(檔案)

2021-04-12 21:43:06 字數 2248 閱讀 3131

由於編寫乙個電子地圖程式時,要儲存一些地圖資訊到檔案中,而地圖儲存方式是樹的形式,因此遇到乙個如何樹項對應的內容,在程式執行時能完整地重畫出來。我是這樣實現的:

首先確定儲存樹的順序,我是用先序遍歷,然後設定標置確實後面的資料是那個樹元素的。

#define  flag_bengin                     0xff

#define  flag_end                           0xfe

#define  flag_child                       0xfd

#define  flag_silbing                   0xfc

#define  flag_nextgroup          0xfb

#define  flag_data                         0xfa 

採用遞迴的方式把樹寫放檔案中:

void cmaptree::writebranch2file(htreeitem hitem, file *hf)

dword alarmcount = g_pmapinfoarray.getat(index)->alarmwndcount;

size = fwrite(&alarmcount, sizeof(dword),1, hf);

trace("fwrite size %d",size);

for(i = 0; i < (int)alarmcount; i++)

}// end of if

} //end of if

trace(str);

htreeitem chitem = this->getchilditem(hitem);

if (chitem != null)

htreeitem sibling = this->getnextsiblingitem(hitem);

if (sibling != null) else

}相反把樹讀出來:

void cmaptree::loadtreeanddraw(file *hf)

branchtype;

branchtype = root;

pmapinfo mapinfo;

mapinfohead head;

dword hostcount;

hostwndinfo hostwnd;

dword alarmwndcount;

alarmwndinfo alarmwnd;

int i;

cstring szitem;

byte flag;

read first flag

fread(&flag,sizeof(byte),1,hf);

while (!bend)

read alarmwndarray

fread(&alarmwndcount,sizeof(dword),1,hf);

mapinfo->alarmwndcount = alarmwndcount;

for(i = 0; i <(int)alarmwndcount; i++)

add mapinfo

g_pmapinfoarray.add(mapinfo);

draw tree

switch(branchtype)

read flag

fread(&flag,sizeof(byte),1,hf);

break;   end of flag_data

case flag_child:

branchtype = child;

fread(&flag,sizeof(byte),1,hf);

break;

case flag_silbing:

branchtype = silbing;

fread(&flag,sizeof(byte),1,hf);

break;

case flag_nextgroup:

hparent = getparentitem(hparent);

//branchtype = nextgroup;

fread(&flag,sizeof(byte),1,hf);

break;

case flag_end:

bend = true; 檔案讀完 

break;

default:

bend = true; 讀檔案異常退出

break;}}

}

properties檔案的訪問

properties文字檔案,訪問鍵值對,處理資料比較方便 獲取properties文字值 properties prop new properties 乙個類搞定 inputstream fis new fileinputstream filepath prop.load fis set keys...

python的檔案訪問

python可以通過建立乙個屬於 file 類的物件並適當使用它的 read readline write 方法 來開啟或使用檔案,並對它們進行讀取或寫入。讀取或寫入檔案的能力取決於你指定以何種 方式開啟檔案。最後,完成了檔案,你可以呼叫 close 方法來告訴 python 我們已經完 成了對該檔...

15 訪問檔案

訪問檔案較複雜,涉及 vfs 塊裝置處理 磁碟快取記憶體。有規範模式 同步模式 記憶體對映 直接 i o 非同步。read write 系統呼叫會最終呼叫相應的服務例程,在其中呼叫檔案物件的 read write 方法,確定資料的物理位置,啟用驅動程式傳輸資料。普通檔案以相鄰扇區成組存放在磁碟上,因...