正如前面提到的,FileSystem和File的API,與FileWriter API一起,可用於從瀏覽器選項卡中的上下文讀取和寫入文件/窗口到客戶機。
有關於文件系統和FileWriter的API的,你應該知道,其中一些被提及的幾件事情,但值得重複:
這些API的
- 實現目前只存在鉻基(Google瀏覽器&歌劇)
- 無論是原料藥帶下的W3C標準跟蹤2014年4月24日,但截至目前是專有的(現在的專利)的API
- 脫除實現瀏覽器的未來是可能性
- 甲沙箱(在磁盤外哪些文件可以產生沒有影響的位置)用於存儲與所述的API創建的文件
- 甲虛擬文件系統(一個目錄結構,其並不一定存在於磁盤上以與從瀏覽器訪問時相同的形式)被使用表示使用API創建的文件
下面是簡單的例子,說明如何直接或間接地使用API來做這些事情:
BakedGoods *
寫入文件:
bakedGoods.set({
data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
讀文件:
bakedGoods.get({
data: ["testFile"],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(resultDataObj, byStorageTypeErrorObj){}
});
使用RAW文件,FileWriter的,和文件系統的API
寫入文件:
function onQuotaRequestSuccess(grantedQuota)
{
function saveFile(directoryEntry)
{
function createFileWriter(fileEntry)
{
function write(fileWriter)
{
var dataBlob = new Blob(["Hello world!"], {type: "text/plain"});
fileWriter.write(dataBlob);
}
fileEntry.createWriter(write);
}
directoryEntry.getFile(
"testFile",
{create: true, exclusive: true},
createFileWriter
);
}
requestFileSystem(Window.PERSISTENT, grantedQuota, saveFile);
}
var desiredQuota = 1024 * 1024 * 1024;
var quotaManagementObj = navigator.webkitPersistentStorage;
quotaManagementObj.requestQuota(desiredQuota, onQuotaRequestSuccess);
讀文件:
function onQuotaRequestSuccess(grantedQuota)
{
function getfile(directoryEntry)
{
function readFile(fileEntry)
{
function read(file)
{
var fileReader = new FileReader();
fileReader.onload = function(){var fileData = fileReader.result};
fileReader.readAsText(file);
}
fileEntry.file(read);
}
directoryEntry.getFile(
"testFile",
{create: false},
readFile
);
}
requestFileSystem(Window.PERSISTENT, grantedQuota, getFile);
}
var desiredQuota = 1024 * 1024 * 1024;
var quotaManagementObj = navigator.webkitPersistentStorage;
quotaManagementObj.requestQuota(desiredQuota, onQuotaRequestSuccess);
鑑於當前狀態的文件系統和FileWriter的的API,其利用讀取和寫入文件目前不構成做這些事情的「HTML5的方式」。儘管如此,從未實施的瀏覽器供應商對API的重新興趣可能會使它們重新回到標準軌道上。這加上基於Chromium的瀏覽器的高市場滲透率以及谷歌(Chromium的主要貢獻者)未向API提供和報廢日期的事實應該足以證明其在某些情況下的使用。
* BakedGoods是不是別人這傢伙就在這裏:)
你怎麼用這個去年底維持?我對具有完整文件系統訪問權的瀏覽器應用程序進行了相同的分析。謝謝 – Dave 2011-02-08 19:36:59