文件系统与客户端数据库


文件系统 API

操作本地文件系统的文件分为以下几步:首先,必须要获取一个表示本地文件系统的对象:

// 同步版本
// 永久,1MB
var fs = requestFileSystemSync(PERSISTENT, 1024 * 1024);
    
// 异步版本
// 临时,适用于缓存数据,50MB
requestFileSystem(TEMPORARY, 50 * 1024 * 1024, function(fs) {
    // fs就是文件系统对象,这里对其进行一些操作
}, function(e) {
    console.log(e);  // 错误处理
});

上述方法获取到的文件系统对象有一个 root 属性,该属性指向文件系统的根目录,这是一个 DirectoryEntry 对象,并且它还可能有嵌套目录,嵌套目录也用 DirectoryEntry 对象表示,文件系统包含的文件都用 FileEntry 表示。FileEntry 类定义了一个获取表示文件内容的 File 对象的方法,然后可以使用 FileReader 方法读取该文件,此外还有一个 FileWriter 对象,用于将内容写入到文件中。

以下是读取/写入文件的示例代码:

requestFileSystem(PERSISTENT, 10 * 1024 * 1024, function(fs) {  // 获取文件系统
    fs.root.getFile("hello.txt", {}, function(entry) {  // 获取 FileEntry
         entry.file(function(file) {  // 获取 File 对象
             var reader = new FileReader();
             reader.readAsText(file);   
             reader.onload = function() {  // 获取文件内容
                 console.log(reader.result);
             };
         });
    });
});

客户端数据库

  • Web SQL,支持通过 SQL 进行查询的简单关系数据库,Chrome、Safari 已支持,Firefox 和 IE 没有,此 API 已废弃
  • IndexedDB:这是一个对象数据库,而不是关系数据库,Firefox、Chrome 已支持,作用域受同源策略约束

IndexedDB API 操作流程:首先通过指定名字打开数据库,然后创建一个事务对象,并使用该对象在数据库中通过指定名字查询对象存储区,最后调用对象存储区的 get() 方法查询对象或者 put() 方法更新对象,如果要新增可以通过 add() 方法。

IndexedDB API 打开数据库、get()put()add()等操作是异步的。


Vote Vote Cancel Collect Collect Cancel

<< 上一篇: Blob

>> 下一篇: WebSocket