DirectoryEntrySync - Web APIs 编辑

Non-standard

This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

The DirectoryEntrySync interface of the File System API represents a directory in a file system. It includes methods for creating, reading, looking up, and recursively removing files in a directory.

This interface has been abandonned: it was on a standard track and it proves not a good idea. Do not use it anymore.

About this document

This document was last updated on March 2, 2012 and follows the W3C Specifications (Working Draft) drafted on April 19, 2011.

This specification is pretty much abandoned, having failed to reach any substantial traction.

Basic concepts

If you want to create subdirectories, you have to create each child directory in sequence. If you try to create a directory using a full path that includes parent directories that do not exist yet, you get an error. So create the hierarchy by recursively adding a new path after creating the parent directory.

Example

The getFile() method returns a FileEntrySync, which represents a file in the file system.  The following creates an empty file called seekrits.txt in the root directory.

var fileEntry = fs.root.getFile('seekrits.txt', {create: true});

The getDirectory() method returns a DirectoryEntrySync, which represents a file in the file system. The following creates a new directory called superseekrit in the root directory.

var dirEntry = fs.root.getDirectory('superseekrit', {create: true});

Method overview

DirectoryReaderSync createReader () raises (FileException);
FileEntrySync getFile (in DOMString path, in optional Flags options) raises (FileException);
DirectoryEntrySync getDirectory (in DOMString path, in optional Flags options) raises (FileException);
void removeRecursively () raises (FileException);

Methods

createReader()

Creates a new DirectoryReaderSync to read entries from this directory.

DirectoryReaderSync createReader (
) raises (FileException);
Returns
DirectoryReaderSync
Represents a directory in a file system.
Parameter

None

Exceptions

This method can raise a FileException with the following codes:

ExceptionDescription
NOT_FOUND_ERRThe directory does not exist.
SECURITY_ERRThe browser determined that it was not safe to look up the metadata. [ todo: Explain why ]

getFile()

Depending on how you've set the options parameter, the method either creates a file or looks up an existing file.

void getFile (
  in DOMString path, in optional Flags options
) raises (FileException);
Parameter
path
Either an absolute path or a relative path from the directory to the file to be looked up or created. You cannot create a file whose immediate parent does not exist. Create the parent directory first.
options
An object literal describing the behavior of the method. If the file does not exist, it is created.
Object literalConditionResult
create: true
exclusive: true
Path already existsAn error is thrown.
create: true
exclusive: false
Path doesn't exist and no other error occursA file is created. If a file already exists, no error is thrown.
create: false
(exclusive is ignored)
Path existsThe file is returned.
create: false
(exclusive is ignored)
Path doesn't existAn error is thrown.
create: false
(exclusive is ignored)
Path exists, but is a directoryAn error is thrown.
Returns
FileEntrySync
Represents a file in a file system.
Exceptions

This method can raise a FileException with the following codes:

ExceptionDescription
ENCODING_ERRThe path supplied is invalid.
NOT_FOUND_ERRThe path was structurally correct, but refers to a resource that does not exist.
NO_MODIFICATION_ALLOWED_ERRThis is a permission issue. The target directory or file is not writable.
PATH_EXISTS_ERRThe file already exists. You cannot create another one with the same path.
QUOTA_EXCEEDED_ERRORThe operation would cause the application to exceed its storage quota.
SECURITY_ERRThe application does not have permission to access the element referred to by path. [ todo: Explain why ]
TYPE_MISMATCH_ERRThe path supplied exists, but it is not a directory.

getDirectory()

Creates or looks up a directory. The method is similar to getFile() with DirectoryEntrySync being passed.

void getDirectory (
  in DOMString path, in optional Flags options
) raises (FileException);
Parameter
path
Either an absolute path or a relative path from the directory to the file to be looked up or created. You cannot create a file whose immediate parent does not exist. Create the parent directory first.
options
An object literal describing the behavior of the method if the file does not exist.
Object literalConditionResult
create: true
exclusive: true
Path already existsAn error is thrown.
create: true
exclusive: false
Path doesn't exist and no other error occursA directory is created. If a file already exists, no error is thrown.
create: false
(exclusive is ignored)
Path existsThe directory is returned.
create: false
(exclusive is ignored)
Path doesn't existAn error is thrown.
create: false
(exclusive is ignored)
Path exists, but is a directoryAn error is thrown.
Returns
DirectoryEntrySync
Represents a directory in a file system.
Exceptions

This method can raise a FileException with the following codes:

ExceptionDescription
ENCODING_ERRThe path supplied is invalid.
NOT_FOUND_ERRThe path was structurally correct, but refers to a resource that does not exist.
NO_MODIFICATION_ALLOWED_ERRThis is a permission issue. The target directory or file is not writable.
PATH_EXISTS_ERRThe file already exists. You cannot create another one with the same path.
QUOTA_EXCEEDED_ERRORThe operation would cause the application to exceed its storage quota.
SECURITY_ERRThe application does not have permission to access the element referred to by path. [ todo: Explain why ]
TYPE_MISMATCH_ERRThe path supplied exists, but it is not a directory.

removeRecursively()

Deletes a directory and all of its contents. You cannot delete the root directory of a file system.

If you delete a directory that contains a file that cannot be removed or if an error occurs while the deletion is in progress, some of the contents might not be deleted. Catch these cases with error callbacks and retry the deletion.

void removeRecursively (
)  raises (FileException);
Parameter

None

Returns

void

Exceptions

This method can raise a FileException with the following codes:

ExceptionDescription
NOT_FOUND_ERRThe target directory does not exist.
INVALID_STATE_ERRThis directory is not longer valid for some reason other than being deleted.

[todo: Explain more ]

NO_MODIFICATION_ALLOWED_ERROne of the following is not writable: the directory, its parent directory, and some of the content in the directory.
SECURITY_ERRThe application does not have permission to access the target directory, its parent, or some of its contents.

Browser compatibility

BCD tables only load in the browser

See also

Specification: File API: Directories and System SpecificationWD

Reference: File System API

Introduction: Basic Concepts About the File System API

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

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

发布评论

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

词条统计

浏览:68 次

字数:14032

最后编辑:6 年前

编辑次数:0 次

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