FileSystemEntry: moveTo() 方法

已弃用:此特性不再推荐。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在删除过程中,或者可能仅为兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅本页底部的兼容性表格以指导您的决策。请注意,此特性可能随时停止工作。

非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。

FileSystemEntry 接口的 moveTo() 方法将条目指定的文件的位置移动到文件系统中的新位置,或者如果目标目录与源目录相同,则重命名文件。

在您可以执行的操作上有一些典型限制

  • 不能将目录移动到其自身内部。
  • 除非您指定新名称,否则不能将条目移动到其父目录中。指定新名称可让 moveTo() 同时兼具重命名操作的功能。
  • 移动目录时,移动操作始终是递归的;您不能省略子文件夹。
  • 您不能将文件移动到替换现有目录,也不能将目录移动到替换现有文件。但是,文件可以替换文件,目录可以替换目录。
  • 只有当目录为空时,您才能覆盖它。

语法

js
moveTo(newParent, newName)
moveTo(newParent, newName, successCallback)
moveTo(newParent, newName, successCallback, errorCallback)

参数

newParent

一个 FileSystemDirectoryEntry 对象,指定移动操作的目标目录。

newName 可选

如果提供了此参数,则条目将被重命名为具有此字符串作为其新的文件名或目录名。

successCallback 可选

当移动操作成功完成后调用的函数。接收一个参数:一个基于 FileSystemEntry 的对象,提供已移动项目的详细新信息。

errorCallback 可选

在移动项目时发生错误时执行的可选回调。有一个参数:一个 DOMException,描述了出了什么问题。

返回值

无(undefined)。

异常

DOMException.INVALID_MODIFICATION_ERR

请求的操作涉及不可能的更改,例如将目录移动到其自身或其某个子目录内部,或在不重命名的情况下将项目复制到同一目录中。

DOMException.QUOTA_EXCEEDED_ERR

操作超出了用户的存储配额,或者没有足够的可用存储空间来完成操作。

示例

此示例显示了一个临时日志文件在超过一兆字节大小时如何被移动到一个更永久的“log”目录中。

js
workingDirectory.getFile(
  "tmp/log.txt",
  {},
  (fileEntry) => {
    fileEntry.getMetadata((metadata) => {
      if (metadata.size > 1048576) {
        workingDirectory.getDirectory(
          "log",
          {},
          (dirEntry) => {
            fileEntry.moveTo(dirEntry);
          },
          handleError,
        );
      }
    });
  },
  handleError,
);

浏览器兼容性

另见