正如前面提到的,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