FileSystemEntry - 表示文件系统中的单个条目

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

FileSystemEntry文件和目录条目 API 的接口,表示文件系统中的单个条目。该条目可以是文件或目录(目录由 DirectoryEntry 接口表示。它包括处理文件的方法 - 包括复制,移动,删除和读取文件 - 以及它指向的文件的信息 - 包括文件名及其从根到条目的路径。

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

基本概念

您不用直接创建 FileSystemEntry 对象。相反,您将通过其他 API 获得基于该接口的对象。该接口充当 FileSystemFileEntryFileSystemDirectoryEntry 接口的基类,这些接口分别提供特定于表示文件和目录的文件系统条目的功能。

FileSystemEntry 接口包含您想要操作文件和目录的方法,但它还包括一个便捷的方法来获取条目的 URL:toURL()。它还引入了一个新的 URL scheme:filesystem:

您可以使用 Google Chrome 上的 filesystem: scheme 来查看存储在应用源的所有文件和文件夹。只需使用 filesystem: scheme 作为应用程序源的根目录。例如,如果您的应用程序位于 http://www.example.com,在选项卡中打开 filesystem:http://www.example.com/temporary/。Chrome 会显示存储在您应用源的所有文件和文件夹的只读列表。

实例

要查看 toURL() 如何工作的实例,请参阅方法描述。下面的代码段显示了如何按名称删除文件。

// 处理特定于浏览器的前缀。
window.requestFileSystem  = window.requestFileSystem || window.webkitRequestFileSystem; 

// ...

// 使用临时存储打开文件系统
window.requestFileSystem(TEMPORARY, 1024*1024 /*1MB*/, function(fs) {
  fs.root.getFile('log.txt', {}, function(fileEntry) {

    fileEntry.remove(function() {
      console.log('File removed.');
    }, onError);

  }, onError);
}, onError); 

属性

该接口提供了以下属性。

filesystem 只读

一个 FileSystem 对象,表示条目所在的文件系统。

fullPath 只读

一个 USVString 对象,它提供从文件系统根到条目的完整绝对路径;它也可以被认为是一个相对于根目录的路径,前面加上一个 “/” 字符。

isDirectory 只读

一个 Boolean,如果条目表示目录,则为 true; 否则,它是 false

isFile 只读

一个 Boolean,如果条目表示文件,则为 true。如果它不是文件,则该值为 false

name 只读

一个 USVString 包含条目的名称(路径的最后部分,在最后一个 “/” 字符之后)。

方法

该接口定义了以下方法。

copyTo()

将文件或目录复制到文件系统上的新位置。

getMetadata()

获取有关文件的元数据,例如其修改日期和大小。

getParent()

返回表示条目父目录的 FileSystemDirectoryEntry

moveTo()

将文件或目录移动到文件系统上的新位置,或重命名文件或目录。

remove()

删除指定的文件或目录。您只能删除空的目录。

toURL()

创建并返回标识条目的 URL。该 URL 使用 URL schema "filesystem:"

规范

规范 状态 备注
File and Directory Entries API 编者的草案 提议的 API 草案

该 API 没有正式的 W3C 或 WHATWG 规范。

桌面浏览器兼容性

特性 Chrome Edge Firefox Internet Explorer Opera Safari
基础支持 13 webkit 不支持1 50 不支持 不支持 不支持
filesystem 13 未知 50 不支持 不支持 不支持
fullPath 13 未知 50 不支持 不支持 不支持
isDirectory 13 未知 50 不支持 不支持 不支持
isFile 13 未知 50 不支持 不支持 不支持
name 13 未知 50 不支持 不支持 不支持
copyTo 13 未知 不支持 不支持 不支持 不支持
getMetadata 13 未知 不支持 不支持 不支持 不支持
getParent 13 未知 不支持 不支持 不支持 不支持
moveTo 13 未知 不支持 不支持 不支持 不支持
remove 13 未知 不支持 不支持 不支持 不支持
toURL 13 未知 不支持 不支持 不支持 不支持

移动浏览器兼容性

特性 Android Chrome for Android Edge mobile Firefox for Android IE mobile Opera Android iOS Safari
基础支持 支持 webkit 支持 webkit 支持 50 未知 不支持 不支持
filesystem 支持 支持 未知 50 未知 不支持 不支持
fullPath 支持 支持 未知 50 未知 不支持 不支持
isDirectory 支持 支持 未知 50 未知 不支持 不支持
isFile 支持 支持 未知 50 未知 不支持 不支持
name 支持 支持 未知 50 未知 不支持 不支持
copyTo 支持 支持 未知 不支持 未知 不支持 不支持
getMetadata 支持 支持 未知 不支持 未知 不支持 不支持
getParent 支持 支持 未知 不支持 未知 不支持 不支持
moveTo 支持 支持 未知 不支持 未知 不支持 不支持
remove 支持 支持 未知 不支持 未知 不支持 不支持
toURL 支持 支持 未知 不支持 未知 不支持 不支持

1. Edge 将该接口实现为非标准的 WebKitEntry 接口的一部分,该接口还实现了接口 FileSystemFileEntryFileSystemDirectoryEntry

相关链接