FileSystemEntry - 表示文件系统中的单个条目
非标准
该功能是非标准的。请尽量不要在生产环境中使用它:因为每个用户不一定会正常运行。它的实现可能存在很大的不兼容性,并且将来可能会改变行为。
FileSystemEntry
是文件和目录条目 API 的接口,表示文件系统中的单个条目。该条目可以是文件或目录(目录由 DirectoryEntry
接口表示。它包括处理文件的方法 - 包括复制,移动,删除和读取文件 - 以及它指向的文件的信息 - 包括文件名及其从根到条目的路径。
因为这是一个非标准 API,目前规范上没有该标准,所以请记住并非所有浏览器都实现它,可能只实现它的一小部分。有关详细信息,请查看浏览器兼容性部分。
基本概念
您不用直接创建 FileSystemEntry
对象。相反,您将通过其他 API 获得基于该接口的对象。该接口充当 FileSystemFileEntry
和 FileSystemDirectoryEntry
接口的基类,这些接口分别提供特定于表示文件和目录的文件系统条目的功能。
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
接口的一部分,该接口还实现了接口 FileSystemFileEntry
和 FileSystemDirectoryEntry
。
相关链接
- 文件和目录条目 API
- 文件系统 API 简介
-
FileSystemFileEntry
和FileSystemDirectoryEntry
,都是基于FileSystemEntry
。