文件系统与客户端数据库
文件系统 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()
等操作是异步的。
No Comments