Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FileSystemFileHandle::move() #1

Closed
JasonGrass opened this issue Dec 12, 2023 · 4 comments
Closed

FileSystemFileHandle::move() #1

JasonGrass opened this issue Dec 12, 2023 · 4 comments

Comments

@JasonGrass
Copy link
Owner

JasonGrass commented Dec 12, 2023

FileSystemFileHandle::move()

早期问题

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

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

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

最新版本已修复

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

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

anyway,这是个好消息。

@JasonGrass
Copy link
Owner Author

FileSystemFileHandle.move() feature 的添加记录

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

@JasonGrass
Copy link
Owner Author

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

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

image

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

@JasonGrass
Copy link
Owner Author

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
Copy link
Owner Author

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

在这里提交了反馈

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant