在c++中可以由程式控制檔案指標的移動,從而實現檔案的隨機訪問,即可讀寫流中任意一段內容。
一般文字檔案很難準確定位,所以隨機訪問多用於二進位制檔案。如【
例9.9
】中物件中兩個字串是按實際串長存放的,不是按陣列元素來存放的,而【
例9.10
】中是按陣列長度來存放的,每個物件資料長度固定,所以便於隨機訪問。在ios類中說明了乙個公有列舉型別:
enum seek_dir
;設定「輸入流指標控制字」的成員函式:
istream&istream::seekg(streampos); //指標直接定位
istream&istream::seekg(streamoff, ios::seek_dir); //指標相對定位
long istream::tellg(); //返回當前指標位置
流的指標位置型別streampos和流的指標偏移型別streamoff定義為長整型,也就是可訪問檔案的最大長度為4g。例:
datafile.seekg(-20l,ios::cur);
//表示將檔案定位指標從當前位置向檔案頭部方向移20個位元組。
datafile.seekg(20l,ios::beg);
//表示將檔案定位指標從檔案頭向檔案尾方向移20個位元組。
datafile.seekg(-20l,ios::end);
//表示將檔案定位指標從檔案尾向檔案頭方向移20個位元組。
tellg()和seekg()往往配合使用。
//指標不可移到檔案頭之前或檔案尾之後。設定「輸出流指標控制字」的成員函式:
ostream&ostream::seekp(streampos);
ostream&ostream::seekp(streamoff,ios::seek_dir);
long ostream::tellp();
為了便於記憶,函式名中g是get的縮寫,而p是put的縮寫。對輸入輸出檔案定位指標只有乙個但函式有兩組,這兩組函式功能完全一樣。【例9.11】使用隨機訪問對【例9.10】進行改造。(
檢視原始碼
)
moto E2檔案訪問
折騰了幾天終於在moto e2手機上的檔案訪問成功了,我在j2me中訪問手機目錄 目錄字首file 也可以用 file localhost 主目錄 手機目錄 phone 所以moto機器的檔案目錄為file phone 或者file localhost phone 儲存卡目錄為file sd mot...
1 檔案測試 2 檔案操作
1 檔案測試函式 2 檔案操作 新建檔案 fopen filename,w 以 寫 的方式開啟乙個不存在的檔案,就會新建該檔案 檔案刪除 unlink 檔案複製 copy filename,aaa bb.txt 盡量使用 和相對路徑,因為linux只認 也沒有磁碟分割槽,而windows 和 都認 ...
LINUX學習筆記9 檔案訪問
a 建立檔案 int creat const char filename,mode t mode 1.filename 要建立的檔名 2.include include include 3.mode 建立模式 只能控制建立使用者的寫屬性,其餘使用者都是不可寫,所以一般是755 a s irusr 可...