專利名稱:一種文檔加載的方法及裝置的制作方法
技術領域:
本發明涉及信息顯示領域,尤其涉及一種文檔加載的方法及裝置。
背景技術:
目前,電子閱讀器是一種采用LCD (Liquid Crystal Display,液晶顯示屏)或電子紙為顯示屏幕的新式數字閱讀器,用戶使用電子閱讀器可以閱讀互聯網上絕大部分格式的電子書。一般地,電子閱讀器加載一個文檔時,首先,讀取所述文檔的內容,然后將所述文檔的內容轉換成電子閱讀器能夠識別的編碼內容并存儲,最后,將編碼內容賦值給顯示空間所支持的字符串并存儲,至此,電子閱讀器就能夠顯示此文檔。在實現上述文檔加載的過程中,發明人發現現有技術中至少存在如下問題電子閱讀器按照上述操作方法加載文檔時,所需的內存空間很大,加載文檔的速度很慢。而對于電子閱讀器這種嵌入式設備,其內存空間是有限的,無法加載較大的文檔,因而按照現有的文檔加載的方法,速度會很慢,從而影響了用戶閱讀的體驗。
發明內容
本發明實施例提供一種文檔加載的方法及裝置,以豐富用戶閱讀的體驗。本發明實施例采用如下技術方案一種文檔加載的方法,包括將文檔劃分成至少兩個文檔塊;分別讀取所述文檔塊;將所述文檔塊對應的源字符串轉換為目標字符串;將所述目標字符串轉換為待顯示字符串,并顯示所述待顯示字符串。一種文檔加載的裝置,包括文檔分塊單元,用于將文檔劃分成至少兩個文檔塊;文檔塊讀取單元,用于分別讀取所述文檔塊;目標字符串轉換單元,用于將所述文檔塊對應的源字符串轉換為目標字符串;待顯示字符串處理單元,用于將所述目標字符串轉換為待顯示字符串,并顯示所述待顯示字符串。本發明實施例提供的文檔加載的方法及裝置,首先,將文檔劃分成至少兩個文檔塊;然后分別讀取所述文檔塊;再將所述文檔塊對應的源字符串轉換為目標字符串;最后, 所述目標字符串轉換為待顯示字符串,并顯示所述待顯示字符串。因而,當用戶使用電子閱讀器閱讀大的文檔時,由于是將該文檔分成至少兩個文檔塊,也即在加載文檔塊的過程中文檔塊所占用的內存小于整個文檔占用的內存,因此,利用本發明實施例的技術方案,在電子閱讀器上加載文檔塊更加節省內存,更加快捷,從而改善了用戶閱讀的體驗。
為了更清楚地說明本發明實施例的技術方案,下面將對實施例描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本發明實施例二文檔加載的方法的流程圖;圖2為本發明實施例二中第三內存空間的示意圖;圖3為本發明實施例二和現有技術方案的對比示意圖;圖4為本發明實施例三文檔加載的裝置的示意圖;圖5為本發明實施例三的裝置的又一示意圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。為提高電子閱讀器加載文檔的速度,改善用戶閱讀的體驗,本發明實施例一提供了一種文檔加載的方法,首先,將文檔劃分成至少兩個文檔塊。然后分別讀取所述文檔塊。 再將所述文檔塊對應的源字符串轉換為目標字符串。最后,將所述目標字符串轉換為待顯示字符串,并顯示所述待顯示字符串。因而,通過上述描述可以看出,當用戶使用電子閱讀器閱讀大的文檔時,由于是將該文檔分成至少兩個文檔塊,也即在加載文檔塊的過程中文檔塊所占用的內存小于整個文檔占用的內存,因此,利用本發明實施例的技術方案,在電子閱讀器上加載文檔塊更加節省內存,更加快捷,從而改善了用戶閱讀的體驗。以下結合具體的實施例,詳細描述一下本發明實施例加載文檔的方法。如圖1所示,本發明實施例二提供了一種文檔加載的方法,具體包括步驟11、電子閱讀器將文檔劃分成至少兩個文檔塊。在本實施例中,電子閱讀器具體將文檔分成幾塊,是根據所述文檔的大小來決定的。對于大的文檔,可以將其多劃分成幾個文檔塊,而相對較小的文檔,則可以少劃分幾塊。具體地,電子閱讀器通過下面的公式確定將所述文檔劃分成幾塊BL0CK_NUM = FILE_SIZE% BL0CK_SIZE ? FILE_SIZE/BL0CK_SIZE+1 :FILE_SIZE/ BL0CK_SIZE其中,FILE_SUE為所述文檔的大小,BL0CK_SIZE為預設的文檔塊的大小,由實際應用中的系統環境和硬件配置來決定,BL0CK_NUM為文檔塊的數量,即所述文檔被劃分成 BL0CK_NUM 塊。并且,所述電子閱讀器有多種方式存儲各個文檔塊的起止位置信息,以方便電子閱讀器更加快速地讀取各個文檔塊。例如鏈表、數組、容器等方式,其中鏈表相對于其他方式更靈活、簡便。例如,電子閱讀器加載一個文檔FILE,其大小為FILE_SIZE,預定文檔塊 BLOCK的大小為BL0CK_SIZE,首先根據文檔塊的數量BL0CK_NUM的計算公式,確定BL0CK_NUM為N,然后通過鏈表存儲所述文檔FILE,如下表1所示表 1
塊號開始位置結束位置
01*BL0CK_SIZE
21 =i=BL0CK—S IZE+12*BL0CK_SIZE
(n-l)*BL0CK_SIZE+ln*BL0CK_SIZE
N(N-I) *BL0CK_SIZE+1FILE—SIZE從上表1可以看出,第η塊(1 <=η<Ν)的起始位置為(n_l)^ L0CK_SUE+1,終止位置為n*BL0CK_SIZE,而最后一個文檔塊的開始位置為(N_l) ^ L0CK_SIZE+1,終止位置為FILE_SUE。前(N-I)個文檔塊都是大小為BL0CK_SUE的文檔塊,而最后一個文檔塊的大小不固定,所以當電子閱讀器加載最后一個文檔塊時,要根據最后一個文檔塊的實際大小來分配內存。此過程結合下面的內容詳細描述。以電子閱讀器加載一個20M的文檔為例,假設預定文檔塊的大小為5M,因此,可將該20M的文檔分成4塊,電子閱讀器可建立一個鏈表記錄各文檔塊的起止位置,如下表2所示表 2
塊號 Γ~2Γ^Γ^
起止位置 0-52428805242881-10485760 10485761-15728640 15728641-20971520通過上表2可以看出,第一文檔塊的起止位置是04442880字節,第二文檔塊的起止位置為5對洲81字節-10485760字節,第三文檔塊的起止位置是10485761字節-15728640字節,第四文檔塊的起止位置是15728641字節-20971520字節。步驟12、電子閱讀器分別讀取所述文檔塊。在此步驟中,電子閱讀器開辟一個新的線程,稱之為threadread,用于根據表2中的起止位置信息分別讀取所述文檔塊,然后申請一個文檔塊的大小的內存空間用來存放所述文檔塊的源字符串,稱此內存空間為第一內存空間。在本實施例中,假設電子閱讀器從第二文檔塊開始加載文檔。具體地,電子閱讀器根據所述第二文檔塊的起止位置信息,讀取第二文檔塊,并申請5M的內存空間存放所述第二文檔塊的源字符串,此時,所述第一內存空間的大小為5M。步驟13、電子閱讀器將所述文檔塊對應的源字符串轉換為目標字符串。
5
在此步驟中,電子閱讀器另外開辟一個線程,稱之為threadconver,專門用來將各文檔塊對應的源字符串轉換為目標字符串。所述線程threadconver在將各文檔塊對應的源字符串轉換為目標字符串的同時,也可以保證該轉換的過程不會阻塞主進程,這樣,用戶在閱讀顯示的內容的時候,感受不到后臺的轉換過程,可以提高用戶閱讀的速度。然后,電子閱讀器再申請一個內存空間,用來存放轉換后的目標字符串。一般地, 用來存放目標字符串的內存空間是存放源字符串的內存空間的2倍,在此稱存放目標字符串的內存空間為第二內存空間。具體地,當通過步驟12讀取第二文檔塊之后,電子閱讀器將所述第二文檔塊對應的源字符串轉換為目標字符串。由于所述第一內存空間的大小為5M,故電子閱讀器將申請 IOM的第二內存空間來存放第二文檔塊轉換后的目標字符串,并釋放第一內存空間,大小為 5M。步驟14、電子閱讀器將所述目標字符串轉換為待顯示字符串,并顯示所述待顯示字符串。在本實施例中,由于轉換后的目標字符串為單字節存取,而待顯示字符串是多個字節存取的,例如2字節,最多為6字節,因此為了使目標字符串能夠被識別并顯示,電子閱讀器需要把目標字符串賦值給顯示空間所支持的待顯示字符串。一般地,用來存放待顯示字符串的內存空間小于存放目標字符串的內存空間,在此稱存放待顯示字符串的內存空間為第三內存空間。具體地,對于第二文檔塊的目標字符串,電子閱讀器將該目標字符串賦值給顯示空間所支持的待顯示字符串,并申請7. 5M的內存空間用來存放該待顯示字符串,此時,第三內存空間的大小為7. 5M。根據步驟12-步驟14,電子閱讀器完成了第二文檔塊的加載。如果所述第二文檔塊不是要加載的最后一個文檔塊,那么電子閱讀器首先釋放第一內存空間和第二內存空間,然后按照步驟12-步驟14的操作過程,繼續加載下一個文檔塊直到最后一個文檔塊,所述下一個文檔塊可能是第三個文檔塊,也可能是用戶需要加載的任一文檔塊。如果所述第二文檔塊是要加載的最后一個文檔塊,那么在步驟13中,電子閱讀器將所述第二文檔塊對應的源字符串轉換為目標字符串之后,還將釋放第一內存空間;在步驟14中,電子閱讀器將所述目標字符串轉換為待顯示字符串,并顯示所述待顯示字符串之后,還將釋放第二內存空間。在本實施例中,特別地,如圖2所示,當電子閱讀器往前加載文檔塊時,例如電子閱讀器加載第二文檔塊之后,繼續加載第三文檔塊的時候,將存放第三文檔塊的待顯示字符串的內存空間追加到存放第二文檔塊的待顯示字符串的內存空間之后;當電子閱讀器往后加載文檔塊時,例如電子閱讀器加載第二文檔塊之后,繼續加載第一文檔塊的時候,將存放第一文檔塊的待顯示字符串的內存空間插入到存放第二文檔塊的待顯示字符串的內存空間之前。因此,無論電子閱讀器往前加載還是往后加載,都不會覆蓋第三內存空間原有的待顯示字符串。這樣對于加載過的文檔塊,電子閱讀器不需要再次加載,節省了加載時間。另夕卜,如果一個文檔的大小為FILE_SIZE,預定文檔塊的大小為BL0CK_SIZE,當 FILE_SIZE小于BL0CK_SUE時,可不再將所述文檔分塊,按照上述步驟12-步驟14直接加載所述文檔。由于所述文檔不大,電子閱讀器不需要再另外開辟線程將所述文檔的源字符串轉換為目標字符串時,即在步驟12和步驟13中,電子閱讀器可以使用一個線程讀取所述文檔,并將所述文檔的源字符串轉換為目標字符串。以上只是以第二文檔塊為例進行的描述,對于其他文檔塊的處理方式相同。如圖3所示,利用本發明實施例的技術方案,當電子閱讀器加載了所有文檔塊并釋放第一內存空間和第二內存空間之后,占用內存空間僅為4*第三內存空間=4*7. 5M = 30M,即使在內存最大時刻,本發明實施例也僅僅占用了 40M的內存空間,即第二內存空間 +4*第三內存空間=10M+4*7. 5M = 40M。而利用現有技術,當電子閱讀器加載20M的文檔時,首先,申請20M的內存空間用來讀取所述文檔,然后將所述文檔對應的源字符串轉換為目標字符串,并申請40M的內存用來存儲轉換后的目標字符串,最后,將所述目標字符串賦值給顯示空間所支持的待顯示字符串,并申請30M的內存來存儲待顯示字符串,至此,電子閱讀器加載20M的文檔共占用了 90M內存空間,即20M+40M+30M = 90M。因而,當電子閱讀器加載20M的文檔時,利用本發明實施例的技術方案,相對于現有技術,可節省60M的內存空間。因而,當用戶使用電子閱讀器閱讀很大的文檔時,由于是將該文檔分成至少兩個文檔塊,也即在加載文檔塊的過程中文檔塊所占用的內存小于整個文檔占用的內存,并適時釋放內存空間,因此,利用本發明實施例的技術方案,在電子閱讀器上加載文檔更加節省內存,更加快捷,從而豐富了用戶閱讀的體驗。如圖4所示,本發明實施例三提供了一種文檔加載的裝置,具體包括文檔分塊單元41,用于將文檔劃分成至少兩個文檔塊;文檔塊讀取單元42,用于分別讀取所述文檔塊; 目標字符串轉換單元43,用于將所述文檔塊對應的源字符串轉換為目標字符串;待顯示字符串處理單元44,用于將所述目標字符串轉換為待顯示字符串,并顯示所述待顯示字符串。其中,如前所述,所述文檔分塊單元41可根據所述文檔的大小和預設的文檔塊大小將所述文檔劃分成至少兩個文檔塊。其中,如圖5所示,所述裝置還可包括信息存儲單元45,用于存儲所述文檔塊的起止位置信息,以更加快速的讀取各個文檔塊。并且,所述信息存儲單元存儲的形式有多種,例如鏈表、數組、容器等。其中,所述目標字符串轉換單元43可包括第一轉換模塊,用于將所述文檔塊對應的源字符串轉換為所述目標字符串;第一存儲模塊,用于存儲所述目標字符串。所述待顯示字符串處理單元44可包括第二轉換模塊,用于將所述目標字符串轉換為所述待顯示字符串;第二處理模塊,用于存儲并顯示所述待顯示字符串。此外,為了進一步節約內存,當電子閱讀器加載最后一個文檔塊時,如圖5所示, 所述裝置還可包括釋放單元46,用于釋放所述源字符串占用的內存空間,或者用于釋放所述目標字符串占用的內存空間;或者用于釋放所述源字符串占用的內存空間,并釋放所述目標字符串占用的內存空間。在本發明實施例中,所述裝置的工作原理可參照方法實施例中的描述。并且,本發明實施例的裝置可位于電子閱讀器中。由上可以看出,當用戶使用文檔加載的裝置閱讀很大的文檔時,由于是將該文檔分成至少兩個文檔塊,也即在加載文檔塊的過程中文檔塊所占用的內存小于整個文檔占用的內存,因此,利用本發明實施例的文檔加載的裝置,加載文檔時更加節省內存,更加快捷,從而改善了用戶閱讀的體驗。綜上所述,本發明實施例提供的文檔加載的方法及裝置,首先,將文檔劃分成至少兩個文檔塊;然后分別讀取所述文檔塊;再將所述文檔塊對應的源字符串轉換為目標字符串;最后,將所述目標字符串轉換為待顯示字符串,并顯示所述待顯示字符串。因而,當用戶使用電子閱讀器閱讀很大的文檔時,由于是將該文檔分成至少兩個文檔塊,也即在加載文檔塊的過程中文檔塊所占用的內存小于整個文檔占用的內存,因此,利用本發明實施例的技術方案,在電子閱讀器上加載文檔更加節省內存,更加快捷,從而改善了用戶閱讀的體驗。以上所述,僅為本發明的具體實施方式
,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應以所述權利要求的保護范圍為準。
權利要求
1.一種文檔加載的方法,其特征在于,包括 將文檔劃分成至少兩個文檔塊;分別讀取所述文檔塊;將所述文檔塊對應的源字符串轉換為目標字符串;將所述目標字符串轉換為待顯示字符串,并顯示所述待顯示字符串。
2.根據權利要求1所述的方法,其特征在于,所述將文檔劃分成至少兩個文檔塊,包括根據所述文檔的大小和預設的文檔塊大小將所述文檔劃分成至少兩個文檔塊。
3.根據權利要求1或2所述的方法,其特征在于,所述將文檔劃分成至少兩個文檔塊之后,還包括存儲所述文檔塊的起止位置信息;所述分別讀取所述文檔塊包括分別根據所述文檔塊的起止位置信息讀取所述文檔塊。
4.根據權利要求1或2所述的方法,其特征在于,所述將所述文檔塊對應的源字符串轉換為目標字符串之后,所述方法還包括當所述文檔塊為最后一個文檔塊時,釋放所述源字符串占用的內存空間。
5.根據權利要求1或2所述的方法,其特征在于,所述將所述目標字符串轉換為待顯示字符串,并顯示所述待顯示字符串之后,所述方法還包括當所述文檔塊為最后一個文檔塊時,釋放所述目標字符串占用的內存空間。
6.一種文檔加載的裝置,其特征在于,包括文檔分塊單元,用于將文檔劃分成至少兩個文檔塊; 文檔塊讀取單元,用于分別讀取所述文檔塊;目標字符串轉換單元,用于將所述文檔塊對應的源字符串轉換為目標字符串; 待顯示字符串處理單元,用于將所述目標字符串轉換為待顯示字符串,并顯示所述待顯示字符串。
7.根據權利要求6所述的裝置,其特征在于,所述裝置還包括 信息存儲單元,用于存儲所述文檔塊的起止位置信息;所述文檔塊讀取單元用于分別根據所述文檔塊的起止位置信息讀取所述文檔塊。
8.根據權利要求6所述的裝置,其特征在于,所述目標字符串轉換單元包括 第一轉換模塊,用于將所述文檔塊對應的源字符串轉換為所述目標字符串; 第一存儲模塊,用于存儲所述目標字符串。
9.根據權利要求6所述的裝置,其特征在于,所述待顯示字符串處理單元包括 第二轉換模塊,用于將所述目標字符串轉換為所述待顯示字符串;第二處理模塊,用于存儲并顯示所述待顯示字符串。
10.根據權利要求6所述的裝置,其特征在于,所述裝置還包括釋放單元,用于在讀取到最后一個文檔塊后,釋放所述源字符串占用的內存空間和/或釋放所述目標字符串占用的內存空間。
全文摘要
本發明實施例公開了一種文檔加載的方法及裝置,涉及信息顯示領域,為豐富用戶的閱讀體驗而發明。所述方法包括將文檔劃分成至少兩個文檔塊;分別讀取所述文檔塊;將所述文檔塊對應的源字符串轉換為目標字符串;將所述目標字符串轉換為待顯示字符串,并顯示所述待顯示字符串。本發明實施例主要用于電子閱讀器中,并且利用本發明實施例的技術方案可以豐富用戶閱讀的體驗。
文檔編號G06F17/22GK102567285SQ20101059964
公開日2012年7月11日 申請日期2010年12月13日 優先權日2010年12月13日
發明者宋久元 申請人:漢王科技股份有限公司