FileSystemDirectoryEntry - Web API 接口参考 编辑

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

文件和目录条目 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()
删除目录和所有内容,包含子目录的内容。它已经从规范中移除。

规范

SpecificationStatusComment
File and Directory Entries APIDraftDraft of proposed API

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

浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerMicrosoft EdgeOperaSafari (WebKit)
Basic support13 webkit(Yes)50 (50)[2]未实现未实现[3]未实现未实现
removeRecursively()13 webkit?未实现[1]未实现未实现未实现未实现
getFile() and getDirectory()13 webkit?50 (50)[2]未实现未实现未实现未实现
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE PhoneOpera MobileSafari 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

另见

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:85 次

字数:10068

最后编辑:8年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文