国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      數(shù)據(jù)文件寫入方法及系統(tǒng)、數(shù)據(jù)文件讀取方法及系統(tǒng)的制作方法

      文檔序號:6515598閱讀:215來源:國知局
      數(shù)據(jù)文件寫入方法及系統(tǒng)、數(shù)據(jù)文件讀取方法及系統(tǒng)的制作方法
      【專利摘要】本發(fā)明公開了一種數(shù)據(jù)文件寫入方法以及系統(tǒng)、數(shù)據(jù)文件讀取方法及系統(tǒng),數(shù)據(jù)文件寫入方法用于將待寫數(shù)據(jù)寫入數(shù)據(jù)文件中,其包括:取得一條或多條待寫數(shù)據(jù);設(shè)置第一字符串;將每條待寫數(shù)據(jù)作為一個(gè)單元,并在每個(gè)單元中加入第一字符串,且第一字符串位于每個(gè)單元的前端,用于標(biāo)識每個(gè)單元;將每個(gè)單元寫入數(shù)據(jù)文件中。通過本發(fā)明,在數(shù)據(jù)文件出現(xiàn)部分?jǐn)?shù)據(jù)損壞的情況下,仍可以查找數(shù)據(jù)文件中未損壞的數(shù)據(jù)進(jìn)行讀取。
      【專利說明】數(shù)據(jù)文件寫入方法及系統(tǒng)、數(shù)據(jù)文件讀取方法及系統(tǒng)
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)處理領(lǐng)域,具體涉及一種數(shù)據(jù)文件寫入方法及系統(tǒng)、數(shù)據(jù)文件讀取方法及系統(tǒng)。
      【背景技術(shù)】
      [0002]在計(jì)算機(jī)系統(tǒng)中,例如存儲系統(tǒng),經(jīng)常出現(xiàn)多個(gè)進(jìn)程讀寫數(shù)據(jù)文件的場景。例如一個(gè)進(jìn)程按照一定協(xié)議格式將數(shù)據(jù)寫到一個(gè)文件中,然后另一個(gè)進(jìn)程讀取這個(gè)文件,并按這個(gè)協(xié)議格式解析這個(gè)文件的內(nèi)容。
      [0003]在絕大部分情況下,這樣做沒有問題。但如果計(jì)算機(jī)意外宕機(jī),導(dǎo)致進(jìn)程在寫某個(gè)數(shù)據(jù)時(shí),只寫了一半而終止,就會導(dǎo)致數(shù)據(jù)文件損壞,讀取進(jìn)程按照之前約定的協(xié)議進(jìn)行解析其內(nèi)容就會出現(xiàn)問題,從而導(dǎo)致后面所有的數(shù)據(jù)都無法讀取。
      [0004]例如,在一個(gè)消息隊(duì)列系統(tǒng)中,有這樣一個(gè)異步發(fā)送消息的功能。消息生產(chǎn)者(producer)發(fā)送消息時(shí),調(diào)用異步發(fā)送接口來發(fā)送,異步發(fā)送接口直接將消息寫到本地文件中,形成消息文件。同時(shí),消息生產(chǎn)者所在的機(jī)器會啟動(dòng)一個(gè)守護(hù)進(jìn)程,實(shí)時(shí)讀取這個(gè)消息文件,將里面的內(nèi)容轉(zhuǎn)發(fā)給服務(wù)端(broker),架構(gòu)圖如圖1所示。
      [0005]消息生產(chǎn)者寫消息文件格式為:依次將每條消息追加到文件尾部,每條消息包含4個(gè)字節(jié)的消息長度,后面跟上消息內(nèi)容(消息內(nèi)容的長度與4個(gè)字長的消息長度一致)。當(dāng)消息生產(chǎn)者發(fā)送了 3條消息后,消息文件格式如圖2所示,3條消息中的內(nèi)容分別為長度68字節(jié)的消息內(nèi)容1、長度20字節(jié)的消息內(nèi)容2和長度53字節(jié)的消息內(nèi)容3。
      [0006]如果在消息生產(chǎn)者發(fā)送第三條消息時(shí),消息內(nèi)容3只寫了一半,機(jī)器就突然宕機(jī),那么數(shù)據(jù)寫入就不完整。當(dāng)機(jī) 器啟動(dòng)后,如果消息生產(chǎn)者繼續(xù)發(fā)送消息,那么發(fā)送完第四條消息后,消息文件的格式如圖3所示。
      [0007]因?yàn)橄?nèi)容3不完整,當(dāng)寫入第四條消息后,另外的進(jìn)程讀取這個(gè)文件內(nèi)容然后進(jìn)行解析時(shí),會誤將第四條消息的一部分當(dāng)作第三條消息的內(nèi)容,然后第四條消息的4個(gè)字節(jié)的頭部(消息長度)也會不準(zhǔn)確,也進(jìn)而導(dǎo)致后面的內(nèi)容都將無法正確解析。
      [0008]為防止出現(xiàn)前文所說的問題,有一種解決辦法是增加一個(gè)索引文件,索引文件中指明每條消息的在消息文件中的起始位置,以及消息長度。每次消息生產(chǎn)者發(fā)送消息時(shí),先從索引文件中查詢當(dāng)前消息應(yīng)該寫入的位置,然后更新消息文件,最后再更新索引文件。
      [0009]相應(yīng)地,讀進(jìn)程每次從讀取消息時(shí),先查詢索引文件中的消息位置以及長度,然后再定位到消息文件相應(yīng)的位置進(jìn)行查詢。
      [0010]如果在更新消息文件時(shí)突然宕機(jī),那么索引文件就不會得到更新,從而這條消息對讀取進(jìn)程是不可見的,也就不會引起消息文件的錯(cuò)亂了。
      [0011]采用索引文件的方案存在的缺陷在于:
      [0012]1、增加了復(fù)雜性。
      [0013]因?yàn)樽x、寫進(jìn)程都需要同時(shí)涉及兩個(gè)文件的操作,這樣比較麻煩。寫進(jìn)程每次要先讀索引文件,再寫數(shù)據(jù)文件,再繼續(xù)更新索引文件……;讀進(jìn)程需要先讀索引文件,然后讀數(shù)據(jù)文件,再繼續(xù)讀取索引文件......。
      [0014]2、降低了性能。
      [0015]因?yàn)橥瑫r(shí)操作兩個(gè)文件,這樣對性能有一定損失。一是讀寫的內(nèi)容比以前多了,二是涉及到多個(gè)文件的讀寫時(shí),就不是嚴(yán)格的順序讀寫磁盤,對性能也有一定影響。
      [0016]所以,本發(fā)明需要解決的技術(shù)問題在于,當(dāng)數(shù)據(jù)文件的部分?jǐn)?shù)據(jù)損壞后,如何完成對整個(gè)文件的未損壞數(shù)據(jù)的正確讀取,且讀寫數(shù)據(jù)文件的過程不涉及到數(shù)據(jù)文件外的其他文件,以減少不必要的復(fù)雜度和性能損耗。

      【發(fā)明內(nèi)容】

      [0017]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的數(shù)據(jù)文件寫入方法及系統(tǒng)、數(shù)據(jù)文件讀取方法及系統(tǒng)。
      [0018]依據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)文件寫入方法,用于將待寫數(shù)據(jù)寫入數(shù)據(jù)文件中,其包括:取得一條或多條待寫數(shù)據(jù);設(shè)置第一字符串;將每條待寫數(shù)據(jù)作為一個(gè)單元,并在每個(gè)單元中加入第一字符串,且第一字符串位于每個(gè)單元的前端,用于標(biāo)識每個(gè)單元;將每個(gè)單元寫入數(shù)據(jù)文件中。
      [0019]可選地,設(shè)置第一字符串的步驟包括:從一條或多條待寫數(shù)據(jù)中提取出多個(gè)字符組成第一字符串。
      [0020]可選地,多個(gè)字符為一條或多條待寫數(shù)據(jù)中出現(xiàn)概率最低的多個(gè)字符。
      [0021]可選地,在將每個(gè)單元寫入數(shù)據(jù)文件中的步驟之前,還包括:設(shè)置一個(gè)或多個(gè)第二字符串,以分別表示一條或多條待寫數(shù)據(jù)的長度;在每個(gè)單元中加入一個(gè)第二字符串,且第二字符串連接在每個(gè)單元中的第一字符串與待寫數(shù)據(jù)之間,用于表示每個(gè)單元中的待寫數(shù)據(jù)的長度。
      [0022]根據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)文件寫入系統(tǒng),用于將待寫數(shù)據(jù)寫入數(shù)據(jù)文件中,其包括:待寫數(shù)據(jù)取得模塊,用于取得一條或多條待寫數(shù)據(jù);第一字符串設(shè)置模塊,用于設(shè)置第一字符串;第一字符串加入模塊,用于將每條待寫數(shù)據(jù)作為一個(gè)單元,并在每個(gè)單元中加入第一字符串,且第一字符串位于每個(gè)單元的前端,用于標(biāo)識每個(gè)單元;單元寫入模塊,將每個(gè)單元寫入數(shù)據(jù)文件中。
      [0023]可選地,第一字符串設(shè)置模塊從一條或多條待寫數(shù)據(jù)中提取出多個(gè)字符組成第一字符串。
      [0024]可選地,多個(gè)字符為一條或多條待寫數(shù)據(jù)中出現(xiàn)概率最低的多個(gè)字符。
      [0025]可選地,在將每個(gè)單元寫入數(shù)據(jù)文件中的步驟之前,還包括:第二字符串設(shè)置模塊,用于設(shè)置一個(gè)或多個(gè)第二字符串,以分別表示一條或多條待寫數(shù)據(jù)的長度;第二字符串加入模塊,用于在每個(gè)單元中加入一個(gè)第二字符串,且第二字符串連接在每個(gè)單元中的第一字符串與待寫數(shù)據(jù)之間,用于表示每個(gè)單元中的待寫數(shù)據(jù)的長度。
      [0026]根據(jù)本發(fā)明的數(shù)據(jù)文件寫入方法和系統(tǒng),在數(shù)據(jù)文件寫入過程中可以將每條待寫數(shù)據(jù)與一個(gè)第一字符串結(jié)合作為一個(gè)單元,該第一字符串處于單元的前端,起到標(biāo)識每個(gè)單元的作用,以保證在數(shù)據(jù)文件讀取過程中,即使該數(shù)據(jù)文件中的部分單元損壞,仍可通過查找第一字符串的方式找到其他單元,如果該單元未損壞,則可正確讀取其中的數(shù)據(jù),由此解決了在不涉及其他文件的基礎(chǔ)上,如何讀取數(shù)據(jù)文件中的未損壞數(shù)據(jù)的技術(shù)問題,相對傳統(tǒng)的方案,只涉及到一個(gè)文件的寫入,寫入的內(nèi)容變少,且單個(gè)文件的寫入更容易,有利于寫入性能的提高,相對增加一個(gè)索引文件,增加第一字符串就相對容易很多,也減少了出錯(cuò)的可能。
      [0027]依據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)文件讀取方法,用于從數(shù)據(jù)文件中讀取待讀數(shù)據(jù),數(shù)據(jù)文件包括一個(gè)或多個(gè)單元,每個(gè)單元前端都具有第一字符串,每個(gè)單元中還具有一條待讀數(shù)據(jù),該方法包括:在數(shù)據(jù)文件中查找第一字符串,如果查找到一個(gè)或多個(gè)第一字符串,則表示查找到一個(gè)或多個(gè)第一字符串所在的單元;按預(yù)定規(guī)則,讀取單元中的待讀數(shù)據(jù)。
      [0028]可選地,在數(shù)據(jù)文件中查找第一字符串的步驟包括:在數(shù)據(jù)文件中從前向后查找第一字符串,每找到一個(gè)第一字符串,則在其所在單元中的待讀數(shù)據(jù)讀取完成后,從待讀數(shù)據(jù)向后繼續(xù)查找下一條第一字符串。
      [0029]可選地,在數(shù)據(jù)文件中查找第一字符串的步驟包括:讀取數(shù)據(jù)文件的初始多個(gè)字符,初始多個(gè)字符與第一字符串的長度相同;將初始多個(gè)字符與第一字符串進(jìn)行比較;如果二者匹配,則確定初始多個(gè)字符為第一字符串;如果二者不匹配,則從初始多個(gè)字符向后,查找出第一組與第一字符串匹配的字符,作為第一字符串。
      [0030]可選地,在數(shù)據(jù)文件中查找第一字符串的步驟還包括:在一條待讀數(shù)據(jù)讀取完成后,讀取連接在其后的連續(xù)多個(gè)字符,連續(xù)多個(gè)字符與第一字符串的長度相同;將連續(xù)多個(gè)字符與第一字符串進(jìn)行比較;如果二者匹配,則確定連續(xù)多個(gè)字符為第一字符串;如果二者不匹配,則從連續(xù)多個(gè)字符向后,查找出第一組與第一字符串匹配的字符,作為第一字符串O
      [0031]可選地,按預(yù)定規(guī)則,讀取單元中的待讀數(shù)據(jù)的步驟包括:按預(yù)定長度,讀取連接在單元的第一字符串之后的多個(gè)字符作為第二字符串;根據(jù)第二字符串,確定單元中待讀數(shù)據(jù)的數(shù)據(jù)長度;按數(shù)據(jù)長度,讀取連接接在第二字符串之后的多個(gè)字符作為待讀數(shù)據(jù)。
      [0032]依據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)文件讀取系統(tǒng),用于從數(shù)據(jù)文件中讀取待讀數(shù)據(jù),數(shù)據(jù)文件包括一個(gè)或多個(gè)單元,每個(gè)單元前端都具有第一字符串,每個(gè)單元中還具有一條待讀數(shù)據(jù),該系統(tǒng)包括:第一字符串查找模塊,用于在數(shù)據(jù)文件中查找第一字符串,如果查找到一個(gè)或多個(gè)第一字符串,則表示查找到一個(gè)或多個(gè)第一字符串所在的單元;待讀數(shù)據(jù)讀取模塊,用于按預(yù)定規(guī)則,讀取單元中的待讀數(shù)據(jù)。
      [0033]可選地,第一字符串查找模塊在數(shù)據(jù)文件中從前向后查找第一字符串,每找到一個(gè)第一字符串,則在其所在單元中的待讀數(shù)據(jù)由待讀數(shù)據(jù)讀取模塊讀取完成后,從待讀數(shù)據(jù)向后繼續(xù)查找下一條第一字符串。
      [0034]可選地,第一字符串查找模塊包括:第一字符讀取模塊,用于讀取數(shù)據(jù)文件的初始多個(gè)字符,初始多個(gè)字符與第一字符串的長度相同;第一比較模塊,用于將初始多個(gè)字符與第一字符串進(jìn)行比較;第一確定模塊,如果二者匹配,則確定初始多個(gè)字符為第一字符串;第一子查找模塊,如果二者不匹配,則從初始多個(gè)字符向后,查找出第一組與第一字符串匹配的字符,作為第一字符串。
      [0035]可選地,第一字符串查找模塊包括:第二字符讀取模塊,用于在一條待讀數(shù)據(jù)讀取完成后,讀取連接在其后的連續(xù)多個(gè)字符,連續(xù)多個(gè)字符與第一字符串的長度相同;第二比較模塊,用于將連續(xù)多個(gè)字符與第一字符串進(jìn)行比較;第二確定模塊,如果二者匹配,則確定連續(xù)多個(gè)字符為第一字符串;第二子查找模塊,如果二者不匹配,則從連續(xù)多個(gè)字符向后,查找出第一組與第一字符串匹配的字符,作為第一字符串。
      [0036]可選地,還包括:第二字符串讀取模塊,用于按預(yù)定長度,讀取連接在單元的第一字符串之后的多個(gè)字符作為第二字符串;數(shù)據(jù)長度確定模塊,用于根據(jù)第二字符串,確定單元中待讀數(shù)據(jù)的數(shù)據(jù)長度;待讀數(shù)據(jù)讀取模塊按數(shù)據(jù)長度,讀取連接接在第二字符串之后的多個(gè)字符作為待讀數(shù)據(jù)。
      [0037]根據(jù)本發(fā)明的數(shù)據(jù)文件讀取方法和系統(tǒng),由于數(shù)據(jù)文件中的每條待讀數(shù)據(jù)都與一個(gè)第一字符串結(jié)合作為一個(gè)單元,且第一字符串處于單元的前端,能夠起到標(biāo)識每個(gè)單元的作用,所以在數(shù)據(jù)文件讀取過程中,即使該數(shù)據(jù)文件中的部分單元損壞,仍可通過查找第一字符串的方式找到其他單元,如果該單元未損壞,則可正確讀取其中的數(shù)據(jù),由此解決了在不涉及其他文件的基礎(chǔ)上,如何讀取數(shù)據(jù)文件中的未損壞數(shù)據(jù)的技術(shù)問題,相對傳統(tǒng)的方案,只涉及到一個(gè)文件的讀取,需讀取的內(nèi)容變少,且單個(gè)文件的讀取更容易,有利于讀取性能的提聞。
      [0038]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
      【專利附圖】

      【附圖說明】
      [0039]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號表示相同的部件。在附圖中:
      [0040]圖1示出了一個(gè)消息隊(duì)列系統(tǒng)的工作過程;
      [0041]圖2示出了一個(gè)消息文件的結(jié)構(gòu);
      [0042]圖3示出了一個(gè)消息文件的結(jié)構(gòu);
      [0043]圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)寫入方法的流程;
      [0044]圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)寫入方法的流程;
      [0045]圖6示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)寫入方法所實(shí)現(xiàn)的消息文件的結(jié)構(gòu);
      [0046]圖7示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)寫入系統(tǒng)的結(jié)構(gòu);
      [0047]圖8示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)寫入系統(tǒng)的結(jié)構(gòu);
      [0048]圖9示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)寫入方法的流程;
      [0049]圖10示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)寫入方法的流程;
      [0050]圖11示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)寫入方法的流程;
      [0051]圖12示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)寫入方法的流程;以及
      [0052]圖13示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)寫入方法的結(jié)構(gòu)。
      【具體實(shí)施方式】
      [0053]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
      [0054]如圖4所示,本發(fā)明的一個(gè)實(shí)施例提供了一種數(shù)據(jù)文件寫入方法,用于將待寫數(shù)據(jù)寫入數(shù)據(jù)文件中,其包括:步驟41,取得一條或多條待寫數(shù)據(jù);步驟42,設(shè)置第一字符串,第一字符串的長度和值可靈活設(shè)計(jì),例如4個(gè)字節(jié)長度的0X5e5C7Cfe ;步驟43,將每條待寫數(shù)據(jù)作為一個(gè)單元,并在每個(gè)單元中加入第一字符串,且第一字符串位于每個(gè)單元的前端,用于標(biāo)識每個(gè)單元,本實(shí)施例的“單元”表示第一字符串與待寫數(shù)據(jù)的組合,在不同的應(yīng)用場景下可以以不同形式體現(xiàn),例如,在消息隊(duì)列系統(tǒng)中,待寫數(shù)據(jù)為消息內(nèi)容,數(shù)據(jù)文件為消息文件,消息生產(chǎn)者在消息內(nèi)容前加上第一字符串形成一條消息,每條消息即為一個(gè)單元;步驟44,將每個(gè)單元寫入數(shù)據(jù)文件中。則本實(shí)施例中,第一字符串起到了對每個(gè)單元的標(biāo)識作用,從而保證在讀取過程中,即使數(shù)據(jù)文件損壞,仍可通過查找第一字符串的方式找到其他單元,如果該單元未損壞,則可正確讀取其中的數(shù)據(jù),本實(shí)施例的方案只涉及到一個(gè)文件的寫入,寫入的內(nèi)容變少,且單個(gè)文件的寫入更容易,有利于寫入性能的提高,相對增加一個(gè)索引文件,增加第一字符串的相對容易很多,也減少出錯(cuò)的可能。在本實(shí)施例中,步驟41和步驟42順序可以隨意調(diào)換。
      [0055]本發(fā)明的另一實(shí)施例提出一種數(shù)據(jù)文件寫入方法,與上述實(shí)施例相比,本實(shí)施例的數(shù)據(jù)文件寫入方法,步驟42可以為:從一條或多條待寫數(shù)據(jù)中提取出多個(gè)字符組成第一字符串,提取的原則有多種,其中一種為:多個(gè)字符為一條或多條待寫數(shù)據(jù)中出現(xiàn)概率最低的多個(gè)字符,這是為了避免第一字符串與待寫數(shù)據(jù)中的某段字符串相同,從而造成讀取過程中的錯(cuò)誤識別,以消息隊(duì)列系統(tǒng)為例,假如第一字符串長度是4個(gè)字節(jié)(當(dāng)然,也可以為其它數(shù)目個(gè)字節(jié)),能表示大約40億個(gè)數(shù),假如每條消息的長度是100字節(jié),那在消息文件損壞的條件下,第一字符串與消息中的部分內(nèi)容一致的概率是幾千萬分之一,概率極低,可以忽略;本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,提取的原則種類非常多,上述挑選最低概率出現(xiàn)的字符的方式僅為示例,并不對本實(shí)施例的技術(shù)方案進(jìn)行限制,其他原則也是可行的,例如,從一條或多條待寫數(shù)據(jù)中隨機(jī)取得多個(gè)字符。
      [0056]如圖5所示,本發(fā)明的另一實(shí)施例提出一種數(shù)據(jù)文件寫入方法,與上述實(shí)施例相t匕,本實(shí)施例的數(shù)據(jù)文件寫入方法,在步驟44之前,還包括:步驟45,設(shè)置一個(gè)或多個(gè)第二字符串,以分別表示一條或多條待寫數(shù)據(jù)的長度;步驟46,在每個(gè)單元中加入一個(gè)第二字符串,且第二字符串連接在每個(gè)單元中的第一字符串與待寫數(shù)據(jù)之間,用于表示每個(gè)單元中的待寫數(shù)據(jù)的長度,則本實(shí)施例中,在數(shù)據(jù)文件的讀取過程中,按照第二字符串表示的長度,能夠準(zhǔn)確地讀取出數(shù)據(jù)文件中寫入的數(shù)據(jù),以消息隊(duì)列系統(tǒng)為例,根據(jù)本實(shí)施例的技術(shù)方案,最終得到的消息文件(即數(shù)據(jù)文件)的格式如圖6所示,每條消息(即每個(gè)單元)中依次為4個(gè)字節(jié)的第一字符串——0X5e5C7Cfe,4個(gè)字節(jié)的第二字符串——68、20、53,以及待寫數(shù)據(jù)——消息內(nèi)容1、消息內(nèi)容2、消息內(nèi)容3,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,以上僅為單元的一種格式,僅為示例,并不對技術(shù)方案進(jìn)行限制,其他類型的格式也都適用,例如,第二字符串和待讀數(shù)據(jù)之間可加入固定長度的其他信息。在本實(shí)施例中,步驟41、步驟42和步驟45的順序可以隨意調(diào)換,步驟43和步驟46的順序可隨意調(diào)換。
      [0057]如圖7所示,本發(fā)明的一個(gè)實(shí)施例提供了一種數(shù)據(jù)文件寫入系統(tǒng),用于將待寫數(shù)據(jù)寫入數(shù)據(jù)文件中,其包括:待寫數(shù)據(jù)取得模塊71,用于取得一條或多條待寫數(shù)據(jù);第一字符串設(shè)置模塊72,用于設(shè)置第一字符串,第一字符串的長度和值可靈活設(shè)計(jì),例如4個(gè)字節(jié)長度的0X5e5C7Cfe ;第一字符串加入模塊73,將每條待寫數(shù)據(jù)作為一個(gè)單元,并在每個(gè)單元中加入第一字符串,且第一字符串位于每個(gè)單元的前端,用于標(biāo)識每個(gè)單元,本實(shí)施例的“單元”表示第一字符串與待寫數(shù)據(jù)的組合,在不同的應(yīng)用場景下可以以不同形式體現(xiàn),例如,在消息隊(duì)列系統(tǒng)中,待寫數(shù)據(jù)為消息內(nèi)容,數(shù)據(jù)文件為消息文件,消息生產(chǎn)者在消息內(nèi)容前加上第一字符串形成一條消息,每條消息即為一個(gè)單元;單元寫入模塊74,用于將每個(gè)單元寫入數(shù)據(jù)文件中。則本實(shí)施例中,第一字符串起到了對每個(gè)單元的標(biāo)識作用,從而保證在讀取過程中,即使數(shù)據(jù)文件損壞,仍可通過查找第一字符串的方式找到其他單元,如果該單元未損壞,則可正確讀取其中的數(shù)據(jù),本實(shí)施例的方案只涉及到一個(gè)文件的寫入,寫入的內(nèi)容變少,且單個(gè)文件的寫入更容易,有利于寫入性能的提高,相對增加一個(gè)索引文件,增加第一字符串的相對容易很多,也減少出錯(cuò)的可能。
      [0058]本發(fā)明的另一實(shí)施例提出一種數(shù)據(jù)文件寫入系統(tǒng),與上述實(shí)施例相比,本實(shí)施例的數(shù)據(jù)文件寫入系統(tǒng),第一字符串設(shè)置模塊72可以從一條或多條待寫數(shù)據(jù)中提取出多個(gè)字符組成第一字符串,提取的原則有多種,其中一種為:多個(gè)字符為一條或多條待寫數(shù)據(jù)中出現(xiàn)概率最低的多個(gè)字符,這是為了避免第一字符串與待寫數(shù)據(jù)中的某段字符串相同,從而造成讀取過程中的錯(cuò)誤識別,以消息隊(duì)列系統(tǒng)為例,假如第一字符串長度是4個(gè)字節(jié)(當(dāng)然,也可以為其他數(shù)目個(gè)字節(jié)),能表示大約40億個(gè)數(shù),假如每條消息的長度是100字節(jié),那在消息文件損壞的條件下,第一字符串與消息中的部分內(nèi)容一致的概率是幾千萬分之一,概率極低,可以忽略;本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,提取的原則種類非常多,上述挑選最低概率出現(xiàn)的字符的方式僅為示例,并不對本實(shí)施例的技術(shù)方案進(jìn)行限制,其他原則也是可行的,例如,從一條或多條待寫數(shù)據(jù)中隨機(jī)取得多個(gè)字符。
      [0059]如圖8所示,本發(fā)明的另一實(shí)施例提出一種數(shù)據(jù)文件寫入系統(tǒng),與上述實(shí)施例相t匕,本實(shí)施例的數(shù)據(jù)文件寫入系統(tǒng),還包括:第二字符串設(shè)置模塊75,用于設(shè)置一個(gè)或多個(gè)第二字符串,以分別表示一條或多條待寫數(shù)據(jù)的長度;第二字符串加入模塊76,用于在每個(gè)單元中加入一個(gè)第二字符串,且第二字符串連接在每個(gè)單元中的第一字符串與待寫數(shù)據(jù)之間,用于表示每個(gè)單元中的待寫數(shù)據(jù)的長度,則本實(shí)施例中,在數(shù)據(jù)文件的讀取過程中,按照第二字符串表示的長度,能夠準(zhǔn)確地讀取出數(shù)據(jù)文件中寫入的數(shù)據(jù),以消息隊(duì)列系統(tǒng)為例,根據(jù)本實(shí)施例的技術(shù)方案,最終得到的消息文件(即數(shù)據(jù)文件)的格式如圖6所示,每條消息(即每個(gè)單元)中依次為4個(gè)字節(jié)的第一字符串——0x5e5C7Cfe,4個(gè)字節(jié)的第二字符串——68、20、53,以及待寫數(shù)據(jù)——消息內(nèi)容1、消息內(nèi)容2、消息內(nèi)容3,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,以上僅為單元的一種格式,僅為示例,并不對技術(shù)方案進(jìn)行限制,其他類型的格式也都適用,例如,第二字符串和待讀數(shù)據(jù)之間可加入固定長度的其他信息。
      [0060]如圖9所示,本發(fā)明的一個(gè)實(shí)施例提供了一種數(shù)據(jù)文件讀取方法,用于從數(shù)據(jù)文件中讀取待讀數(shù)據(jù),該數(shù)據(jù)文件包括一個(gè)或多個(gè)單元,每個(gè)單元前端都具有第一字符串,每個(gè)單元中還具有一條待讀數(shù)據(jù),該方法包括:步驟91,在數(shù)據(jù)文件中查找第一字符串,例如4個(gè)字節(jié)長度的0X5e5C7Cfe,如果查找到一個(gè)或多個(gè)第一字符串,則表示查找到一個(gè)或多個(gè)第一字符串所在的單元,本實(shí)施例的“單元”表示第一字符串與待讀數(shù)據(jù)的組合,在不同的應(yīng)用場景下可以以不同形式體現(xiàn),例如,在消息隊(duì)列系統(tǒng)中,讀取到消息文件(即數(shù)據(jù)文件)時(shí),一個(gè)單元即一條消息,消息中包含的消息內(nèi)容即為待讀數(shù)據(jù);步驟92,按預(yù)定規(guī)則,讀取單元中的待讀數(shù)據(jù),本實(shí)施例中,第一字符串起到了對每個(gè)單元的標(biāo)識作用,從而保證在讀取過程中,即使數(shù)據(jù)文件損壞,仍可通過查找第一字符串的方式找到其他單元,如果該單元未損壞,則可正確讀取其中的數(shù)據(jù),本實(shí)施例的方案只涉及到一個(gè)文件的讀取,讀取的內(nèi)容變少,且單個(gè)文件的讀取更容易,有利于讀取性能的提高。
      [0061]本發(fā)明的另一實(shí)施例提出一種數(shù)據(jù)文件讀取方法,與上述實(shí)施例相比,本實(shí)施例的數(shù)據(jù)文件讀取方法,步驟91可以為:在數(shù)據(jù)文件中從前向后查找第一字符串,每找到一個(gè)第一字符串,則在其所在單元中的待讀數(shù)據(jù)讀取完成后,從待讀數(shù)據(jù)向后繼續(xù)查找下一條第一字符串,這意味著在讀取數(shù)據(jù)文件時(shí)是對磁盤進(jìn)行順序讀取,效率很高。
      [0062]如圖10所示,本發(fā)明的另一實(shí)施例提出一種數(shù)據(jù)文件讀取方法,與上述實(shí)施例相t匕,本實(shí)施例的數(shù)據(jù)文件讀取方法,步驟91可以包括:步驟1001,讀取數(shù)據(jù)文件的初始多個(gè)字符,初始多個(gè)字符與第一字符串的長度相同;步驟1002,將初始多個(gè)字符與第一字符串進(jìn)行比較;步驟1003,如果二者匹配,則確定初始多個(gè)字符為第一字符串;步驟1004,如果二者不匹配,則從初始多個(gè)字符向后,查找出第一組與第一字符串匹配的字符,作為第一字符串,本實(shí)施例的整個(gè)過程是對磁盤進(jìn)行順序讀取,讀取效率很高,以消息隊(duì)列系統(tǒng)為例,首先讀取4個(gè)字節(jié)的字符與第一字符串0x5e5c7cfe進(jìn)行匹配,如果是0x5e5c7cfe,則意味這是一個(gè)消息(相當(dāng)于一個(gè)單元)的前端,則按消息結(jié)構(gòu)讀取消息中的內(nèi)容(即待讀數(shù)據(jù)),如果不匹配,就認(rèn)為消息文件出現(xiàn)損壞,然后從文件的當(dāng)前位置向后搜索第一個(gè)匹配第一字符串的內(nèi)容,并認(rèn)為這是下一條消息的開始,然后繼續(xù)讀取消息。
      [0063]如圖11所示,本發(fā)明的另一實(shí)施例提出一種數(shù)據(jù)文件讀取方法,與上述實(shí)施例相t匕,本實(shí)施例的數(shù)據(jù)文件讀取方法,步驟91還包括:步驟1101,在一條待讀數(shù)據(jù)讀取完成后,讀取連接在其后的連續(xù)多個(gè)字符,連續(xù)多個(gè)字符與第一字符串的長度相同;步驟1102,將連續(xù)多個(gè)字符與第一字符串進(jìn)行比較;步驟1103,如果二者匹配,則確定連續(xù)多個(gè)字符為第一字符串;步驟1104,如果二者不匹配,則從連續(xù)多個(gè)字符向后,查找出第一組與第一字符串匹配的字符,作為第一字符串,本實(shí)施例的整個(gè)過程是對磁盤進(jìn)行順序讀取,讀取效率很高,以消息隊(duì)列系統(tǒng)為例,在讀取完一個(gè)消息的內(nèi)容之后,接著讀取連續(xù)4個(gè)字節(jié)的字符與第一字符串0x5e5c7cfe進(jìn)行匹配,如果是0x5e5c7cfe,則意味這是一個(gè)消息(相當(dāng)于一個(gè)單元)的前端,則按消息結(jié)構(gòu)讀取消息中的內(nèi)容(即待讀數(shù)據(jù)),如果不匹配,就認(rèn)為消息文件出現(xiàn)損壞,然后從文件的當(dāng)前位置向后搜索第一個(gè)匹配第一字符串的內(nèi)容,并認(rèn)為這是下一條消息的開始,然后繼續(xù)讀取消息。
      [0064]如圖12所示,本發(fā)明的另一實(shí)施例提出一種數(shù)據(jù)文件讀取方法,與上述實(shí)施例相t匕,本實(shí)施例的數(shù)據(jù)文件讀取方法,步驟92包括:步驟1201,按預(yù)定長度,讀取連接在單元的第一字符串之后的多個(gè)字符作為第二字符串;步驟1202,根據(jù)第二字符串,確定單元中待讀數(shù)據(jù)的數(shù)據(jù)長度;步驟1203,按數(shù)據(jù)長度,讀取連接接在第二字符串之后的多個(gè)字符作為待讀數(shù)據(jù),本實(shí)施例的方案,在數(shù)據(jù)文件的每個(gè)單元中依次為第一字符串、第二字符串和待讀數(shù)據(jù)的情況下實(shí)現(xiàn),本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,具體讀取待讀數(shù)據(jù)的方式,視數(shù)據(jù)文件的結(jié)構(gòu)而定,以消息隊(duì)列系統(tǒng)為例,如果讀取到第一字符串0X5e5C7Cfe,則意味這是一條消息的前端,則繼續(xù)讀取4個(gè)字節(jié)的字符作為第二字符串,根據(jù)第二字符串的值確定消息內(nèi)容的長度,假設(shè)長度為68,則繼續(xù)讀取68個(gè)字節(jié)的字符作為消息內(nèi)容。
      [0065]如圖13所示,本發(fā)明的一個(gè)實(shí)施例提供了一種數(shù)據(jù)文件讀取系統(tǒng),用于從數(shù)據(jù)文件中讀取待讀數(shù)據(jù),該數(shù)據(jù)文件包括一個(gè)或多個(gè)單元,每個(gè)單元前端都具有第一字符串,每個(gè)單元中還具有一條待讀數(shù)據(jù),該系統(tǒng)包括:第一字符串查找模塊1301,用于在數(shù)據(jù)文件中查找第一字符串,例如4個(gè)字節(jié)長度的0X5e5C7Cfe,如果查找到一個(gè)或多個(gè)第一字符串,則表示查找到一個(gè)或多個(gè)第一字符串所在的單元,本實(shí)施例的“單元”表示第一字符串與待讀數(shù)據(jù)的組合,在不同的應(yīng)用場景下可以以不同形式體現(xiàn),例如,在消息隊(duì)列系統(tǒng)中,讀取至IJ消息文件(即數(shù)據(jù)文件)時(shí),一個(gè)單元即一條消息,消息中包含的消息內(nèi)容即為待讀數(shù)據(jù);待讀數(shù)據(jù)讀取模塊1302,用于按預(yù)定規(guī)則,讀取單元中的待讀數(shù)據(jù),本實(shí)施例中,第一字符串起到了對每個(gè)單元的標(biāo)識作用,從而保證在讀取過程中,即使數(shù)據(jù)文件損壞,仍可通過查找第一字符串的方式找到其他單元,如果該單元未損壞,則可正確讀取其中的數(shù)據(jù),本實(shí)施例的方案只涉及到一個(gè)文件的讀取,讀取的內(nèi)容變少,且單個(gè)文件的讀取更容易,有利于讀取性能的提聞。
      [0066]本發(fā)明的另一實(shí)施例提出一種數(shù)據(jù)文件讀取系統(tǒng),與上述實(shí)施例相比,本實(shí)施例的數(shù)據(jù)文件讀取系統(tǒng),第一字符串查找模塊1301可以在數(shù)據(jù)文件中從前向后查找第一字符串,每找到一個(gè)第一字符串,則在其所在單元中的待讀數(shù)據(jù)讀取完成后,從待讀數(shù)據(jù)向后繼續(xù)查找下一條第一字符串,這意味著在讀取數(shù)據(jù)文件時(shí)是對磁盤進(jìn)行順序讀取,效率很聞。
      [0067]本發(fā)明的另一實(shí)施例提出一種數(shù)據(jù)文件讀取系統(tǒng),與上述實(shí)施例相比,本實(shí)施例的數(shù)據(jù)文件讀取系統(tǒng),第一字符串查找模塊1301可以包括:第一字符讀取模塊1303,用于讀取數(shù)據(jù)文件的初始多個(gè)字符,初始多個(gè)字符與第一字符串的長度相同;第一比較模塊1304,用于將初始多個(gè)字符與第一字符串進(jìn)行比較;第一確定模塊1305,如果二者匹配,則確定初始多個(gè)字符為第一字符串;第一子查找模塊1306,如果二者不匹配,則從初始多個(gè)字符向后,查找出第一組與第一字符串匹配的字符,作為第一字符串,本實(shí)施例的整個(gè)過程是對磁盤進(jìn)行順序讀取,讀取效率很高,以消息隊(duì)列系統(tǒng)為例,首先讀取4個(gè)字節(jié)的字符與第一字符串0x5e5c7cfe進(jìn)行匹配,如果是0x5e5c7cfe,則意味這是一個(gè)消息(相當(dāng)于一個(gè)單元)的前端,則按消息結(jié)構(gòu)讀取消息中的內(nèi)容(即待讀數(shù)據(jù)),如果不匹配,就認(rèn)為消息文件出現(xiàn)損壞,然后從文件的當(dāng)前位置向后搜索第一個(gè)匹配第一字符串的內(nèi)容,并認(rèn)為這是下一條消息的開始,然后繼續(xù)讀取消息。
      [0068]本發(fā)明的另一實(shí)施例提出一種數(shù)據(jù)文件讀取系統(tǒng),與上述實(shí)施例相比,本實(shí)施例的數(shù)據(jù)文件讀取系統(tǒng),第一字符串查找模塊1301還包括:第二字符讀取模塊1307,用于在一條待讀數(shù)據(jù)讀取完成后,讀取連接在其后的連續(xù)多個(gè)字符,連續(xù)多個(gè)字符與第一字符串的長度相同;第二比較模塊1308,用于將連續(xù)多個(gè)字符與第一字符串進(jìn)行比較;第二確定模塊1309,如果二者匹配,則確定連續(xù)多個(gè)字符為第一字符串;第二子查找模塊1310,如果二者不匹配,則從連續(xù)多個(gè)字符向后,查找出第一組與第一字符串匹配的字符,作為第一字符串,本實(shí)施例的整個(gè)過程是對磁盤進(jìn)行順序讀取,讀取效率很高,以消息隊(duì)列系統(tǒng)為例,在讀取完一個(gè)消息的內(nèi)容之后,接著讀取連續(xù)4個(gè)字節(jié)的字符與第一字符串0X5e5C7Cfe進(jìn)行匹配,如果是0X5e5C7Cfe,則意味這是一個(gè)消息(相當(dāng)于一個(gè)單元)的前端,則按消息結(jié)構(gòu)讀取消息中的內(nèi)容(即待讀數(shù)據(jù)),如果不匹配,就認(rèn)為消息文件出現(xiàn)損壞,然后從文件的當(dāng)前位置向后搜索第一個(gè)匹配第一字符串的內(nèi)容,并認(rèn)為這是下一條消息的開始,然后繼續(xù)讀取消息。
      [0069]本發(fā)明的另一實(shí)施例提出一種數(shù)據(jù)文件讀取系統(tǒng),與上述實(shí)施例相比,本實(shí)施例的數(shù)據(jù)文件讀取系統(tǒng),還包括:第二字符串讀取模塊1311,用于按預(yù)定長度,讀取連接在單元的第一字符串之后的多個(gè)字符作為第二字符串;數(shù)據(jù)長度確定模塊1312,用于根據(jù)第二字符串,確定單元中待讀數(shù)據(jù)的數(shù)據(jù)長度;待讀數(shù)據(jù)讀取模塊1302按數(shù)據(jù)長度,讀取連接接在第二字符串之后的多個(gè)字符作為待讀數(shù)據(jù),本實(shí)施例的方案,在數(shù)據(jù)文件的每個(gè)單元中依次為第一字符串、第二字符串和待讀數(shù)據(jù)的情況下實(shí)現(xiàn),本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,具體讀取待讀數(shù)據(jù)的方式,視數(shù)據(jù)文件的結(jié)構(gòu)而定,以消息隊(duì)列系統(tǒng)為例,如果讀取到第一字符串0X5e5C7Cfe,則意味這是一條消息的前端,則繼續(xù)讀取4個(gè)字節(jié)的字符作為第二字符串,根據(jù)第二字符串的值確定消息內(nèi)容的長度,假設(shè)長度為68,則繼續(xù)讀取68個(gè)字節(jié)的字符作為消息內(nèi)容。
      [0070]在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
      [0071]在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
      [0072]類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
      [0073]本領(lǐng)域那些技術(shù)人員可以理解,可以對實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。
      [0074]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
      [0075]本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)文件寫入系統(tǒng)、數(shù)據(jù)文件讀取系統(tǒng)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
      [0076]應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
      【權(quán)利要求】
      1.一種數(shù)據(jù)文件寫入方法,用于將待寫數(shù)據(jù)寫入數(shù)據(jù)文件中,其包括: 取得一條或多條待寫數(shù)據(jù); 設(shè)置第一字符串; 將每條待寫數(shù)據(jù)作為一個(gè)單元,并在每個(gè)單元中加入所述第一字符串,且所述第一字符串位于所述每個(gè)單元的前端,用于標(biāo)識所述每個(gè)單元; 將所述每個(gè)單元寫入所述數(shù)據(jù)文件中。
      2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)文件寫入方法,其中,所述設(shè)置第一字符串的步驟包括: 從所述一條或多條待寫數(shù)據(jù)中提取出多個(gè)字符組成所述第一字符串。
      3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)文件寫入方法,其中, 所述多個(gè)字符為所述一條或多條待寫數(shù)據(jù)中出現(xiàn)概率最低的多個(gè)字符。
      4.一種數(shù)據(jù)文件寫入系統(tǒng),用于將待寫數(shù)據(jù)寫入數(shù)據(jù)文件中,其包括: 待寫數(shù)據(jù)取得模塊,用于取得一條或多條待寫數(shù)據(jù); 第一字符串設(shè)置模塊,用于設(shè)置第一字符串; 第一字符串加入模塊,用于將每條待寫數(shù)據(jù)作為一個(gè)單元,并在每個(gè)單元中加入所述第一字符串,且所述第一字符串位于所述每個(gè)單元的前端,用于標(biāo)識所述每個(gè)單元; 單元寫入模塊,將所述每個(gè)單元寫入所述數(shù)據(jù)文件中。
      5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)文件寫入系統(tǒng),其中, 所述第一字符串設(shè)置模塊從所述一條或多條待寫數(shù)據(jù)中提取出多個(gè)字符組成所述第一字符串。
      6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)文件寫入系統(tǒng),其中, 所述多個(gè)字符為所述一條或多條待寫數(shù)據(jù)中出現(xiàn)概率最低的多個(gè)字符。
      7.一種數(shù)據(jù)文件讀取方法,用于從數(shù)據(jù)文件中讀取待讀數(shù)據(jù),所述數(shù)據(jù)文件包括一個(gè)或多個(gè)單元,每個(gè)單元前端都具有第一字符串,所述每個(gè)單元中還具有一條待讀數(shù)據(jù),該方法包括: 在所述數(shù)據(jù)文件中查找所述第一字符串,如果查找到一個(gè)或多個(gè)第一字符串,則表示查找到所述一個(gè)或多個(gè)第一字符串所在的單元; 按預(yù)定規(guī)則,讀取所述單元中的待讀數(shù)據(jù)。
      8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)文件讀取方法,其中,所述在所述數(shù)據(jù)文件中查找所述第一字符串的步驟包括: 在所述數(shù)據(jù)文件中從前向后查找所述第一字符串,每找到一個(gè)第一字符串,則在其所在單元中的待讀數(shù)據(jù)讀取完成后,從所述待讀數(shù)據(jù)向后繼續(xù)查找下一條所述第一字符串。
      9.一種數(shù)據(jù)文件讀取系統(tǒng),用于從數(shù)據(jù)文件中讀取待讀數(shù)據(jù),所述數(shù)據(jù)文件包括一個(gè)或多個(gè)單元,每個(gè)單元前端都具有第一字符串,所述每個(gè)單元中還具有一條待讀數(shù)據(jù),該系統(tǒng)包括: 第一字符串查找模塊,用于在所述數(shù)據(jù)文件中查找所述第一字符串,如果查找到一個(gè)或多個(gè)第一字符串,則表示查找到所述一個(gè)或多個(gè)第一字符串所在的單元; 待讀數(shù)據(jù)讀取模塊,用于按預(yù)定規(guī)則,讀取所述單元中的待讀數(shù)據(jù)。
      10.根據(jù)權(quán)利要求9所述的數(shù)據(jù)文件讀取系統(tǒng),其中, 所述第一字符串查找模塊在所述數(shù)據(jù)文件中從前向后查找所述第一字符串,每找到一個(gè)第一字符串,則在其所在單元中的待讀數(shù)據(jù)由所述待讀數(shù)據(jù)讀取模塊讀取完成后,從所述待讀數(shù)據(jù)向后繼續(xù) 查找下一條所述第一字符串。
      【文檔編號】G06F3/06GK103605479SQ201310484997
      【公開日】2014年2月26日 申請日期:2013年10月16日 優(yōu)先權(quán)日:2013年10月16日
      【發(fā)明者】代兵, 朱超, 王超 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1