FileSystemDirectoryEntry - 表示文件系统中的目录
非标准
该功能是非标准的。请尽量不要在生产环境中使用它:因为每个用户不一定会正常运行。它的实现可能存在很大的不兼容性,并且将来可能会改变行为。
FileSystemDirectoryEntry
是文件和目录条目 API 的接口,表示文件系统中的目录。它提供了一些方法,可以访问和操作目录中的文件,以及访问目录中的条目。
因为这是一个非标准 API,目前规范上没有该标准,所以请记住并非所有浏览器都实现它,可能只实现它的一小部分。有关详细信息,请查看浏览器兼容性部分。
基本概念
您可以通过调用 getDirectory()
来创建新目录。如果要创建子目录,请按顺序创建每个子目录。如果尝试使用完整路径创建目录,其中包含了不存在的父目录,则会返回错误。因此,应该在创建父目录后,通过递归添加新路径来创建层次结构。
实例
在下面的代码片段中,我们创建了一个名为 “Documents” 的目录。
// 处理特定于浏览器的前缀。
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.directoryEntry = window.directoryEntry || window.webkitDirectoryEntry;
// ...
function onFs(fs){
fs.root.getDirectory('Documents', {create:true}, function(directoryEntry){
//directoryEntry.isFile === false
//directoryEntry.isDirectory === true
//directoryEntry.name === 'Documents'
//directoryEntry.fullPath === '/Documents'
}, onError);
}
// 使用临时存储打开文件系统
window.requestFileSystem(TEMPORARY, 1024*1024 /*1MB*/, onFs, onError);
属性
该接口没有自己的属性,但从其父接口 FileSystemEntry
继承了属性。
方法
该接口从其父接口 FileSystemEntry
继承了方法。
createReader()
创建一个 FileSystemDirectoryReader
对象,可用于读取该目录中的条目。
getDirectory()
返回一个 FileSystemDirectoryEntry
对象,表示位于给定路径的目录,相对于调用该方法的目录。
getFile()
返回一个 FileSystemFileEntry
对象,表示位于目录层次结构中的文件,给定相对于调用该方法的目录的路径。
过时的方法
removeRecursively()
删除目录及其所有内容,包括子目录的内容。该方法已从规范中删除。
规范
规范 | 状态 | 备注 |
---|---|---|
File and Directory Entries API | 编者的草案 | 提议的 API 草案 |
该 API 没有正式的 W3C 或 WHATWG 规范。
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 13 webkit | 不支持1 | 50 | 不支持 | 支持 webkit | 不支持 |
createReader |
13 | 不支持 | 50 | 不支持 | 不支持 | 不支持 |
getDirectory |
13 | 不支持 | 502 | 不支持 | 不支持 | 不支持 |
getFile |
13 | 不支持 | 502 | 不支持 | 不支持 | 不支持 |
removeRecursively |
13 | 不支持 | 50 — 523 | 不支持 | 不支持 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 webkit | 支持 webkit | 支持 | 50 | 未知 | 不支持 | 不支持 |
createReader |
支持 | 支持 | 未知 | 50 | 未知 | 不支持 | 不支持 |
getDirectory |
支持 | 支持 | 未知 | 502 | 未知 | 不支持 | 不支持 |
getFile |
支持 | 支持 | 未知 | 502 | 未知 | 不支持 | 不支持 |
removeRecursively |
支持 | 支持 | 未知 | 50 — 523 | 未知 | 不支持 | 不支持 |
1. Edge 在 WebKitEntry
接口中实现该接口的功能,它称之为 FileSystemEntry
。
2. 在 Firefox 中,errorCallback
的输入参数是 DOMException
而不是 FileError
对象。
3. 虽然存在 removeRecursively()
方法,但是调用它会立即返回带有 NS_ERROR_DOM_SECURITY_ERR
错误的回调。