基于局域網的文件接收及存儲方法、查看方法及系統的制作方法
【技術領域】
[0001]本發明涉及一種文件處理技術,尤其是涉及一種基于局域網的文件接收及存儲方法、查看方法及系統。
【背景技術】
[0002]如今的移動教育類產品發展迅猛,然而基于小型局域網的班級式的移動教育類產品還是比較稀少的。在開發此類產品的過程中利用傳統的網絡文件處理方式很難滿足當前的需求,而且內存占用大、效率低,致使產品的用戶體驗比較差。傳統的網絡文件處理方式是將接收的文件一個一個的保存到本地,然后根據需要再去磁盤上去加載該文件,效率低。
【發明內容】
[0003]本發明所要解決的技術問題是:本發明所要解決的技術問題是:提供一種基于局域網的文件接收及存儲方法、查看方法及系統,其減少了內存占用,提高內存利用率,且提高了系統的I/o效率,并起到對文件的隱藏保護功能。
[0004]為了解決上述技術問題,本發明采用的技術方案為:提供一種基于局域網的文件接收及存儲方法,包括:服務端接收文件字節流數據;存儲所述文件字節流數據到內存映射文件中;提取所述文件及所述內存映射文件的相關信息,并保存在索引記錄對象中;添加所述索引記錄對象到索引記錄對象列表中。
[0005]其中,本發明還提供一種基于局域網的文件查看方法,包括:程序從所述索引記錄對象列表中檢索出所述文件對應的索引記錄對象;根據所述索引記錄對象保存的所述文件相關信息,查找所述文件對應的內存映射文件;在所述內存映射文件中讀取所述文件的內容。
[0006]其中,本發明還提供一種基于局域網的文件接收、存儲及查看系統,包括:移動端、服務端、內存映射文件單元、索引記錄對象單元;其中,所述移動端向所述服務端發送文件字節流數據;所述內存映射文件單元用于創建內存映射文件,所述服務端將所述文件字節流數據存儲到所述內存映射文件中;所述索引記錄對象單元用于創建索引記錄對象。所述服務端提取所述文件及所述內存映射文件的相關信息,并保存在索引記錄對象中。
[0007]本發明的有益效果在于:相對現有技術,本發明中的服務端在接收到其他移動端傳過來的文件字節流數據時,將其存儲到一個內存映射文件中,并將所收到的文件的相關信息保存在內存中的索引記錄對象中。當要使用該文件時,程序先到內存中檢索保存此文件信息的索引記錄對象,然后根據查找到的對象所保存的信息,去對應的內存映射文件中讀取文件內容,再做后續處理。如此不僅可以實現對多個文件內容的隨機訪問,而且可以減少不必要的內存占用,當用戶需要時才去磁盤上把內容讀取到內存中,不需要時可以直接釋放掉,提高內存的使用效率,此外在上述方法及系統下,由于源文件無法被直接看到,因此本本發明還可以對文件起到隱藏保護功能。
【附圖說明】
[0008]圖1為本發明基于局域網的文件接收及存儲方法實施例一的流程圖;
[0009]圖2為本發明基于局域網的文件接收及存儲方法實施例二的流程圖;
[0010]圖3為本發明基于局域網的文件接收及存儲方法實施例二中步驟S70的具體步驟流程圖;
[0011]圖4為本發明基于局域網的文件接收及存儲方法實施例三的流程圖;
[0012]圖5為本發明基于局域網的文件查看方法實施例四的流程圖;
[0013]圖6為本發明基于局域網的文件接收及存儲、查看的系統實施例五的結構示意圖;
[0014]圖7為本發明執行步驟SlOO后的具體步驟流程圖。
【具體實施方式】
[0015]為詳細說明本發明的技術內容、所實現目的及效果,以下結合實施方式并配合附圖予以說明。
[0016]請參照圖1,本發明基于局域網的文件接收及存儲方法實施例一包括如下步驟:
[0017]SllO:服務端接收文件字節流數據;
[0018]S120:存儲所述文件字節流數據到內存映射文件中;
[0019]S130:提取所述文件及所述內存映射文件的相關信息,并保存在索引記錄對象中;
[0020]S140:添加所述索引記錄對象到索引記錄對象列表中。
[0021]一般地,文件在網絡中傳輸時,都需要將文件轉化為字節流數據,字節流是由字節組成的,在所有的流操作里。字節永遠是最基礎的。任何基于字節的操作都是正確的,無論是文本文件還是二進制的文件。所有的InputStream和OutputStream的子類都是字節流,它是按字節來處理的。字節流可用于任何類型的對象。
[0022]而本發明的字節流數據通常是由移動端程序通過TCP鏈接發送的,服務端將這些字節流數據存儲到內存映射文件中。而內存映射文件是由一個文件到一塊內存的映射。內存映射文件與虛擬內存有些類似,通過內存映射文件可以保留一個地址空間的區域,同時將物理存儲器提交給此區域,內存文件映射的物理存儲器來自一個已經存在于磁盤上的文件,而且在對該文件進行操作之前必須首先對文件進行映射。使用內存映射文件處理存儲于磁盤上的文件時,將不必再對文件執行I/o操作,這意味著在對文件進行處理時將不必再為文件申請并分配緩存,所有的文件緩存操作均由系統直接管理,由于取消了將文件數據加載到內存、數據從內存到文件的回寫以及釋放內存塊等步驟,使得內存映射文件在處理大數據量的文件時能起到相當重要的作用。如對于某些特殊應用領域所需要的動輒幾十GB、幾百GB、乃至幾TB的海量存儲,而以通常的文件處理方法進行處理顯然是行不通的,對于上述這種大文件的操作一般是以內存映射文件的方式來加以處理的。
[0023]另外,實際工程中的系統往往需要在多個進程之間共享數據,如果數據量小,處理方法是靈活多變的,或共享數據容量巨大,那么就需要借助于內存映射文件來進行。實際上,內存映射文件正是解決本地多個進程間數據共享的最有效方法。而且,本發明中內存映射文件為可隨機訪問的。
[0024]服務端提取要存儲的文件的相關信息,如該文件的大小、時間戳或其他相關信息后,保存到索引記錄對象中,而內存映射文件的相關信息也可被提取并存儲到索引記錄對象中。在并這些索引記錄對象建立一個索引記錄對象列表。
[0025]從上述描述可知,本發明的有益效果在于:區別于現有技術,本發明實施例一通過存儲文件字節流數據到內存映射文件中,實現了對文件的隨機存儲,減少占用不必要的內存,并對文件及內存映射文件建立相應的索引記錄對象,并添加到索引記錄對象列表中,實現文件存儲的路徑的便捷,并很好的隱藏保護了源文件,具備一定安全可靠性。
[0026]如圖2所示,本發明文件接收及存儲方法實施例二在上述實施例一的基礎上,在步驟SllO之前,還包括如下步驟:
[0027]S70:創建內存映射文件;
[0028]S80:根據所創建的內存映射文件,建立內存映射文件列表,并添加所述內存映射文件到所述內存映射文件列表中;
[0029]S90:對所述內存映射文件進行編號;
[0030]SlOO:所述服務端從所述內存映射文件列表獲取用于存儲所述文件字節流數據的所述內存映射文件。
[0031]如圖3所示,在執行步驟S70時,可具體地可執行如下步驟:
[0032]S71:訪問所接收文件內容的目錄,獲取文件列表;
[0033]S72:再通過系統函數將所接收文件轉換為所述內存映射文件。
[0034]這里的系統函數可以是JAVA函數等可實現轉化的函數。
[0035]而有多個文件需要接收存儲時,當內存映射文件的空間足夠大時,則一個內存映射文件可存儲多個接收的文件內容,若空間不足時,就有必要為每個文件獨立創建其相應的內存映射文件,這些內存映射文件需要對其進行編號,并建立內存映射文件列表,編號可按照文件接收順序進行,如最后要接收的文件,可以將為其創建的內存映射文件排在內存映射文件列表的末尾。其中這些步驟在程序啟動時,可由程序自動完成,或者人工操作實現。
[0036]因此,內存映射文件列表存儲的只是對象的引用,而不是所有文件內容,其所占的內存空間非常有限,這樣方便后續對文件查看的操作。
[0037]如圖7所示,在執行步驟SlOO后,還需判斷所述內存映射文件是否有足夠的空間存儲所接收文件