日期:2012-4-12 來源:GBin1.comhtml
新的HTML5標準給咱們帶來了大量的新特性和驚喜,例如,畫圖的畫布Canvas,多媒體的audio和video等等。除了上面咱們提到的,還有比較新的特性 - File System API,它可以幫助咱們來突破沙箱訪問咱們本地的文件系統,從而有效的彌補桌面和web應用之間的鴻溝。在今天這篇文章中,咱們將會介紹基本的File system API的知識,探索HTML5的本地文件系統API的新特性,但願你們可以喜歡!html5
簡 單來講,web應用很酷,可是相對於桌面應用來講,它們有比較顯著的弱點:它們沒法在一個有層次的文件夾結構體即文件系統中互動和組織。 幸運的是,若是咱們使用Filesystem API,咱們能夠作到。這個API幫助咱們控制私有的本地文件系統「沙箱(sandbox)",在這裏咱們能夠讀和寫文件,建立和排列文件夾。雖然在咱們 寫這篇文章的時候,只有Google的Chrome完整的支持Filesystem API,我以爲咱們仍是有必要學習這個強大而且方便的本地存儲特性。web
本地文件系統API包含了倆個不一樣的版本。異步API,對於通常的應用來講很是有用。同步API,特別爲web設計。這篇文章中,咱們將介紹異步版本的API。api
首先咱們須要經過請求一個LocalFile對象來獲得HTML5文件系統的訪問,使用window.requetFileSystem全局方法:瀏覽器
window.requestFileSystem(type, size, successCallback, opt_errorCallback)
前倆個參數,你指定須要的生命週期類型和文件系統的大小。一個持久性的(Persistent)文件系統很是適合長期保存用戶數據。瀏覽器不會刪除,除非用戶特地要求。一個臨時性(Temporary)的文件系統很是適合web應用來緩存數據,可是在瀏覽器刪除文件系統後任然能夠操做。size用來指定字節大小,通常指定有效的最大訪問存儲大小。緩存
第 三個參數是一個回調函數(callback),當用戶代理成功的提供了一個文件系統後觸發。它的主要參數是一個FileSystem對象。而且咱們能夠添 加一個可選的callback函數,用來在出錯的時候調用,或者請求被拒絕的時候。參數是一個FileError對象。雖然這個對象是可選的,最好仍是捕 捉這些錯誤,由於不少地方可能會出錯。安全
文件系統獲得這些方法依賴於最初包含的document。全部的document或者web應用來自 於同一個最初來源共享一個文件系統。兩個document或者應用來自於不一樣的來源徹底不一樣而且不可聯繫。一個文件系統嚴格被限制訪問一個應用,不能訪問 另一個應用保存的數據。同時也對於其它的文件獨立。這是一件好事:讓文件訪問不相干的系統文件資源,例如,操做系統的文件,徹底沒有必要,也不安全。異步
咱們看看這個例子:ide
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(window.TEMPORARY, 5*1024*1024, initFS, errorHandler);
function initFS(fs){ alert("Welcome to Filesystem! It's showtime :)"); // Just to check if everything is OK :) // place the functions you will learn bellow here }
function errorHandler(){ console.log('An error occured'); }
這 裏咱們建立而來一個臨時的5M文件系統存儲。提供了一個成功的callback函數,用阿里操做咱們的文件系統。而且添加了一個錯誤處理,用來處理錯誤。 這裏errorhandler()方法很是具備通常性。 若是你想的話,你能夠建立一個優化版本,顯示給用戶更加詳細的error信息。函數
...