*檔案伺服器
- 通過用戶端API進行訪問,該API在f32file.h中定義
(磁碟機A——Z:C是系統內建儲存位置,Z是ROM唯讀記憶體保留的,其他的可以任意分配)
*檔案伺服器會話
- 所有的檔案都是通過會話進行訪問
- 應用程式可能有多個會話
- 使用RFs類開啟會話
*串連到檔案伺服器
- 增加資源數
- 必須在完成操作之後關閉資源,比如
RFs fsSession;
User::LeaveIfError(fsSession.Connect());
……
fsSession.Close();
*使用CONE環境提供的執行個體,比如:
RFs& fs = CCoeEnv::Static()->FsSession();
*RFs功能包括
- 添加、刪除、移動和重新命名檔案和目錄
- 擷取目錄列表
- 保持包含磁碟機盤符和路徑的預設路徑
- 擷取磁碟機和卷的資訊
- 請求重要修改的通知事件
*如下的檔案訪問樣本中,CDir類包含目錄列表
RFs& fs = CCoeEnv::Static()->FsSession();
CDir* anEntryList = NULL;
_LIT(KPath,"c://nokia//");
User::LeaveIfError(fs.GetDir(KPath, KEntryAttNormal, ESortByName, anEntryList));
//迭代訪問該列表
for (TInt I=0; i<anEntryList->Count(); I++)
{
const TEntry& anEntry = (*anEntryList)[I];
TBuf<KMaxFileName> name = anEntry.iName;
TUInt IAttributes = anEntry.IAtt;
TInt iSize = anEntry.iSize;
}
delete anEntryList;
anEntryList = NULL;
讀/寫檔案
*RFile類
- 提供控制代碼以開啟單個檔案
- RFile::Create()開啟一個新檔案用於寫入
- RFile::Open()開啟一個已有檔案用於訪問
- RFile::Replace()刪除已有檔案並開啟一個新檔案,或者在該檔案不存在的情況下直接建立一個新檔案
- RFile::Flush()將緩衝的資料寫入檔案
- RFile::Close()關閉檔案
*讀寫檔案方法
- RFile::Read()和RFile::Write()
- 只適用於8位位元據或是ASCII文本
- 不能用於其他資料類型
- 流更適用於檔案讀寫操作
使用RFile操作位元據
*訪問位元據
*RFile類表示一個檔案
*一旦開啟檔案,就可以讀/寫資料
- RFile::Read()
- RFile::Write()
*檔案資料作為位元據或ASCII文本進行處理
*使用位元組描述符
- TDes8,TDesC8,等
*Series60隻支援Unicode,所以使得該函數適用性有限
*刪除檔案和目錄
- 檔案不能處於開啟狀態或是唯讀狀態
- 不能刪除系統檔案
- 目錄必須為空白
- 不能刪除根目錄
- 對於檔案使用RFs::Delete(), 對於目錄使用RFs::RmDir()