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
错误的回调。