MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

FileSystemDirectoryEntry

非标准
该特性是非标准的,请尽量不要在生产环境中使用它!

文件和目录条目 API 的 FileSystemDirectoryEntry 接口表示文件系统中的目录。它提供了方法,使其能够访问和操作目录中的文件,以及访问目录中的条目。

由于这是个非标准的 API,它的规范当前并没有在标准进程中,重要的是要记住,并不是所有浏览器都实现了他,并且实现它的浏览器可能仅仅实现了一小部分。更多细节请查看 Browser compatibility

基本概念

你可以通过调用 getDirectory() 创建新的目录。如果你打算创建子目录,按需创建每个子目录。如果你尝试使用完整路径创建目录,包含不存在的父目录,会返回错误。所以需要在创建父目录之后,递归添加新的路径来创建层次。

示例

下面的代码中,我们创建了一个叫做 "Documents" 的目录。

// Taking care of the browser-specific prefixes.
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);

  }

// Opening a file system with temporary storage
window.requestFileSystem(TEMPORARY, 1024*1024 /*1MB*/, onFs, onError);

属性

这个接口没有自己的属性,但是从它的父接口 FileSystemEntry 继承了属性。

方法

这个接口从它的父接口 FileSystemEntry 继承了方法。

createReader()
创建 FileSystemDirectoryReader 对象,它可以用于服务目录中的条目。
getDirectory()
返回 FileSystemDirectoryEntry 对象,表示位于给定路径的目录,相对于方法调用处的目录。
getFile()
返回 FileSystemFileEntry对象,表示在目录层次中的一个文件,提供相对于方法调用处目录的路径。 

废弃的方法

removeRecursively()
删除目录和所有内容,包含子目录的内容。它已经从规范中移除。

规范

Specification Status Comment
File and Directory Entries API Editor's Draft Draft of proposed API

这个 API 没有官方的  W3C 或者 WHATWG 规范。

浏览器兼容性

    
Feature Chrome Edge Firefox (Gecko) Internet Explorer Microsoft Edge Opera Safari (WebKit)
Basic support 13 webkit (Yes) 50 (50)[2] 未实现 未实现[3] 未实现 未实现
removeRecursively() 13 webkit ? 未实现[1] 未实现 未实现 未实现 未实现
getFile() and getDirectory() 13 webkit ? 50 (50)[2] 未实现 未实现 未实现 未实现
Feature Android Chrome for Android Edge Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Basic support 未实现 0.16 webkit (Yes) 50 (50)[2] 未实现 未实现 未实现
removeRecursively() 未实现 0.16 webkit ? 未实现[1] 未实现 未实现 未实现
getFile() and getDirectory() 未实现 0.16 webkit ? 50 (50)[2] 未实现 未实现 未实现

[1] 虽然 removeRecursively() 方法存在于 Firefox 50,它所做的所有事情就是使用 NS_ERROR_DOM_SECURITY_ERR 调用错误回调。它已经从 Firefox 52 中移除了,并且也从规范中移除。

[2] 在 Firefox 中,错误回调的参数是 DOMException ,而不是 FileError 对象。

[3] Microsoft Edge 在 WebKitEntry 接口中实现了这个接口的功能,它就是 FileSystemEntry

另见

文档标签和贡献者

 此页面的贡献者: wizardforcel
 最后编辑者: wizardforcel,