symbian下的文件操作

 Symbian中的文件操作

本文介紹Symbian中的文件操作。

其實這方面的操作相對於Symbian的某些其他部分來說還是跟其他平臺比較類似的,並無太大的不同。從最訽始的Standard C中的FILE結構到C++中的stream,再到目前的各種各樣的流行的語言、腳本什麼的,對文件的操作無非是打開一個用字符串指定文件名的文件,給出打開方式(Binary or Text, Read or Write),然後獲得“文件對象”,你可以當作這個文件的實例或者句柄什麼的(Instance or Handle),知道意思就行了,反正就是這麼一回事;p?_?_在我們目前的面向對象程序中,如果要對文件進行讀取或者寫入等操作,無非就是調用在這個文件對象各種過程,比如寫入,讀取,Seek,之類的,等到用完了文件再用Close之類的過程關閉它以釋放資源。這個就是我們編成的時候大致的操作文件的抽象描述。Symbian在這方面與其他平臺並無太大差別。

下面結合Code說說具體的操作:
上面說了Symbian在文件操作方面與其他平臺差別不大,但是全無差別也是不可能的。因爲Symbian系統是爲資源受限設備設計的,這一點我相信大家都聽得耳朵起糨子了-_-,所以他的文件資源也是由系統管理的,我們要通過建立FileServer來與系統的文件服務通信,以建立客戶端--服務器模式來訪問文件。說了那麼玄,其實很簡單地,也就是說我們在純粹的使用文件部分的時候,之前要Connet一下FileServer,之後要Close一下FileServer,就這麼簡單。如:

RFs fs;
User::LeaveIfError(fs.Connect());
/*
* Your File Manipulatating Code Here...
*/
fs.Close();

我的Code其實並不好,如果是Symbian老手,我相信即使是簡單的fs.Connect();也會有隨後馬上進行的CleanupStack類的操作,只是我目前還不熟悉,不敢妄自誤導大衆~~
下面的就是文件了,我們在Symbian中使用的比較“低級”或者說“底層”的訽始文件對象是通過RFile類來實現的,大家只要參考一下DeveloperLibrary的這個部分就清楚了,位置是:(Developer Library >> API Reference >> C++ API reference >> File Server Client Side >> RFile)
下面給兩個例子,來說明一下文件的打開,關閉,讀,寫,Seek等操作。

RFs fs;
User::LeaveIfError(fs.Connect());
RFile file
User::LeaveIfError(file.Open(fs, _L("C://file.foo"), EFileWrite));
TBuf8<256> buf;
file.Read(buf, 256);
file.Seek(ESeekStart, 911);
file.Write(_L8("Some thing you wanna write..."));
file.Close();
fs.Close();

注:以上代碼沒有綺過測試,沒有綺過編譯檢查,但是綺過了對照SDK DeveloperLibrary的檢查,技術上應該不會有什麼問題。有兩點要說明的,在程序中寫死(HardCode)變量長度和位置什麼東西還是最好用MACRO代替,這可能是所有programmer的常識了,我並不是在教大家而是指名我的實例代碼中的不足;另一點就是_L8(), _L()這兩個MACRO是Symbian不支持大家再使用的了,大家最好用_LIT()或者_LIT8()來代替好了,此處僅僅爲了方便使用了一下。

大家可以很容易從DeveloperLibrary看出,RFile支持的讀寫只有TDes8這種類型,也就是說它只能以byte,或byte數組的形式寫入或者讀出數據。如果大家想使用文本文件或者二進制數據文件的話,就要藉助更高級的文件類了,他們的使用方法仍然是大同小異。
TFileText提供了文本文件的讀寫,從他的API Reference中很容易看出來,在我們建立好的TFileText對象上,只要Set一個RFile到它本身上面,我們就可以用這個TFileText對象來很容易的對文件(就是底層的RFile)來進行文本文件的讀寫了。

與此類似,RFileReadStream對象,在構造的時候只需指明構建在哪個RFile對象上,我們就可以方便的在這個RFile對象上進行數據的操作,比如讀出一個32bit的整數,讀出一個64比特實型數。RFileWriteStream進行的是寫入方面的操作,操作方式與讀入類相同,就不贅述了。

從上面的例子和說明我們可以看出,Symbian系統的文件操作幾乎與其他平臺沒什麼太大的不同,也是符合所有的抽象文件操作要求的。對文件的操作只要我們看看DeveloperLibrary,記住幾個常用的過程,就沒有什麼困難的了。

希望我寫的文字能給大家帶來些幫助!

爲 kcomex 補充兩點:
1、symbian的所有文件名中最好不好含有空格等特殊字符,負責編譯可能出錯,我用0.9SDK是這樣的。
2、如果編譯的時候出現了你不知道的文件夾,請將mmp文件所在的文件夾中的.bat和.inf文件刪掉,用.mmp重新生成這兩個文件。我一般都是使用mmpclick這個工具來生成的,因爲命令行畢竟不方便。關於mmpclick的使用,在SDK附帶的工具中有詳細的說明。
發佈了11 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章