FileSystemFileEntry - 表示文件系统中的文件
非标准
该功能是非标准的。请尽量不要在生产环境中使用它:因为每个用户不一定会正常运行。它的实现可能存在很大的不兼容性,并且将来可能会改变行为。
FileSystemFileEntry 是文件和目录条目 API 的接口,表示文件系统中的文件。它提供了描述文件属性的属性,以及 file() 方法,它创建了一个可以使用的 File 对象来读取文件。
因为这是一个非标准 API,目前规范上没有该标准,所以请记住并非所有浏览器都实现它,可能只实现它的一小部分。有关详细信息,请查看浏览器兼容性部分。
属性
从其父接口 FileSystemEntry 继承了属性,该接口没有自有的属性。
方法
file()
创建一个新的 File 对象,可用于读取文件。
过时的方法
createWriter()
创建一个新的 FileWriter 对象,该对象允许写入由文件系统条目表示的文件。
基本概念
要将内容写入文件,请通过调用 createWriter() 来创建 FileWriter 对象。要读取文件,请通过调用 file() 获取表示其内容的 File 对象。
实例
下面的代码创建一个名为 "log.txt" 的文件(如果它不存在),并填充文本 “喵” 到文件中。在成功回调中,事件处理程序设置为处理 error error 和 writeend 事件。通过创建 blob,向其附加文本,并将 blob 传递给 FileWriter.write(),将文本数据写入文件。
function onInitFs(fs) {
fs.root.getFile('log.txt', {create: true}, function(fileEntry) {
// 为 FileSystemFileEntry(log.txt)创建 FileWriter 对象。
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
console.log('写入完成。');
};
fileWriter.onerror = function(e) {
console.log('写入失败:' + e.toString());
};
// 创建一个新的 Blob 并将其写入 log.txt。
var bb = new BlobBuilder();
bb.append('喵');
fileWriter.write(bb.getBlob('text/plain'));
}, errorHandler);
}, errorHandler);
}
window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);
规范
| 规范 | 状态 | 备注 |
|---|---|---|
| File and Directory Entries API | 编者的草案 | 提议的 API 草案 |
该 API 没有正式的 W3C 或 WHATWG 规范。
桌面浏览器兼容性
| 特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| 基础支持 | 13 webkit | 不支持1 | 50 | 不支持 | 不支持 | 不支持 |
createWriter |
13 | 不支持 | 50 — 522 | 不支持 | 不支持 | 不支持 |
file |
13 | 不支持 | 50 | 不支持 | 不支持 | 不支持 |
移动浏览器兼容性
| 特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
|---|---|---|---|---|---|---|---|
| 基础支持 | 支持 webkit | 支持 webkit | 不支持1 | 50 | 未知 | 不支持 | 不支持 |
createWriter |
支持 | 支持 | 不支持 | 50 — 522 | 未知 | 不支持 | 不支持 |
file |
支持 | 支持 | 不支持 | 50 | 未知 | 不支持 | 不支持 |
1. Edge 在 WebKitEntry 接口中实现该接口的功能,它称之为 FileSystemEntry。
2. 虽然存在 createWriter() 方法,但调用它会立即返回带有 NS_ERROR_DOM_SECURITY_ERR错误的回调。