JasonGrass / rename

在线文件批量重命名
https://rename.jgrass.xyz/
GNU Affero General Public License v3.0
454 stars 45 forks source link

FileSystemFileHandle::move() #1

Closed JasonGrass closed 10 months ago

JasonGrass commented 11 months ago

FileSystemFileHandle::move()

早期问题

对文件进行重命名的核心方法,是 FileSystemFileHandle::move() 这个方法,目前还没有 MDN 文档。

从测试结果来看,此方法采用的似乎是复制拷贝的操作,在重命名大文件时,操作非常慢。

如果你有大量的大文件需要重命名,建议考虑本地批量重命名工具。

最新版本已修复

在使用 Chrome 120.0.6099.110 这个版本时,发现已经没有这个问题了,使用 move 方法能够飞快完成重命名操作。

不知道是之前的操作有问题(比如特定文件才会出现这个问题?),还是确实是最近哪个版本修复了。

anyway,这是个好消息。

JasonGrass commented 11 months ago

FileSystemFileHandle.move() feature 的添加记录

FileSystemFileHandle.move() for local files - Chrome Platform Status

JasonGrass commented 11 months ago

这里是关于 FileSystemFileHandle.move() 的开发者讨论

Intent to Ship: FileSystemFileHandle.move() for local files

image

但看起来,move 来实现重命名,还是很慢。不清楚发生了什么。相关修改没有发布到 111 版本?

JasonGrass commented 10 months ago

FileSystemFileHandle::move()

这个方法,MDN 中暂时还没有文档,FileSystemFileHandle - Web API 接口参考 | MDN

从 chromium 源码来看,是区分了移动与重命名的。在没有指定目录的情况下,应该使用 Rename 方法,而单纯的 Rename 方法应该很快才对。

不知道为啥重命名大文件时,会这么慢。

image

file_system_file_handle.h - Chromium Code Search

具体提交记录:

FSA: Consolidate move() and rename() to just move() · chromium/chromium@f5483e3

JasonGrass commented 10 months ago

FileSystemFileHandle.move 方法对文件进行重命名时,会更改文件的“修改时间”,而手动重命名或使用本地重命名工具,不会有这个问题。

在这里提交了反馈

Add FileSystemHandle.move method by a-sully · Pull Request #10 · whatwg/fs