【发布时间】:2021-11-18 16:19:27
【问题描述】:
我一直在关注this article,以允许用户(半)自动将客户端生成的 XML 文件保存到特定的本地文件夹。第三方程序正在监视此文件夹,并将处理其内容并在另一个文件中输出内容。
问题是从创建文件到使用 close() 方法将内容实际写入文件大约需要 250 毫秒。
有时第三方程序会检测到文件已创建并尝试在写入之前读取其内容。该程序不支持在尝试读取文件内容之前添加延迟。
我已经考虑将文件写入一个临时位置并在其关闭后将其移动,但使用此 API 似乎无法做到这一点。重命名文件也是如此。
使用普通对话框创建/下载文件可能可行,但这需要手动步骤,而使用文件系统访问 API 可以避免。
另一种解决方案是安装一个本地程序,该程序可以在关闭时将文件从临时文件夹移动到程序监视文件夹,但我宁愿避免在客户端上安装软件。
有没有其他方法可以避免这个问题?
谢谢
【问题讨论】:
-
如果您说的是临时 .crswap 文件。 crbug.com/1168715 中提到了一些解决方法,但使用起来似乎很乏味。
-
.crswap 文件没问题。问题基本上是一个空文件最初是由 getFileHandler(filename, {create: true}) 创建的,只有在~250 ms 之后才是写入文件的实际内容(临时 .crswap 文件中的内容被复制到空文件中之前创建的文件)。如果我可以等待创建文件直到关闭它,问题就会解决。
-
啊,看来移动功能现在正在积极开发中。它在带有
chrome://flags/#enable-experimental-web-platform-features标志的 Canary 中可用。 -
谢谢!刚刚试了一下,现在移动和重命名都可以了。
标签: javascript file-system-access-api