FileSystemFileEntry - 表示文件系统中的文件

非标准
该功能是非标准的。请尽量不要在生产环境中使用它:因为每个用户不一定会正常运行。它的实现可能存在很大的不兼容性,并且将来可能会改变行为。

FileSystemFileEntry文件和目录条目 API 的接口,表示文件系统中的文件。它提供了描述文件属性的属性,以及 file() 方法,它创建了一个可以使用的 File 对象来读取文件。

因为这是一个非标准 API,目前规范上没有该标准,所以请记住并非所有浏览器都实现它,可能只实现它的一小部分。有关详细信息,请查看浏览器兼容性部分。

属性

从其父接口 FileSystemEntry 继承了属性,该接口没有自有的属性。

方法

file()

创建一个新的 File 对象,可用于读取文件。

过时的方法

createWriter()

创建一个新的 FileWriter 对象,该对象允许写入由文件系统条目表示的文件。

基本概念

要将内容写入文件,请通过调用 createWriter() 来创建 FileWriter 对象。要读取文件,请通过调用 file() 获取表示其内容的 File 对象。

实例

下面的代码创建一个名为 "log.txt" 的文件(如果它不存在),并填充文本 “喵” 到文件中。在成功回调中,事件处理程序设置为处理 error errorwriteend 事件。通过创建 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错误的回调。

See also