HTML5 FileSystem API:如果文件在API之外被删除,则无法使用getFile()

时间:2011-08-17 04:26:28

标签: html5 google-chrome webkit google-chrome-extension chromium

我在Chrome扩展程序中使用HTML5 FileSystem API。

有一种不太可能(但可能)的情况:

  1. 使用fileWriter.write()
  2. 创建文件
  3. 用户导航到他们的Chrome用户数据文件夹>文件系统文件夹,并删除创建的文件(使用其操作系统,使用FileSystem API)
  4. 此文件getFile()的所有未来调用都会在错误处理程序中触发FileError.NOT_FOUND_ERR
  5. 似乎如果文件在FileSystem API之外被删除,getFile()总是会出现该文件的错误,这会阻止任何成功的回调函数工作,这意味着我不能使用fileEntry.remove(),也不能fileEntry.createWriter()创建一个具有相同名称的新文件。

    是否有另一种方法可以从FileSystem的逻辑索引中删除文件条目?

1 个答案:

答案 0 :(得分:1)

Windows中存在针对Chrome应用/扩展程序的奇怪行为。事实是,如果您从应用程序的文件系统目录中手动删除文件,您将无法创建具有相同名称的新文件。

现在唯一的解决方法是在第一次调用app时创建某种主目录哈希。然后你应该将它的名字写入(比如说)Local Storage并将你的文件写入这个目录。您的哈希必须足够独特。在我的例子中,它是当前日期对象时间戳。因此,当用户再次删除并安装您的应用/扩展程序时,他们将不会遇到此问题。

这仅指Windows系统。 Linux OS(当然还有ChromeOS)没有这个bug。