【问题标题】:Chrome app create and write to fileChrome 应用程序创建并写入文件
【发布时间】:2016-02-04 19:22:49
【问题描述】:

我正在尝试将 chrome.apps 用于需要编写多个单独的数据日志文件的程序。然后,用户需要能够在其文件系统中的应用程序之外访问这些日志文件以进行后期处理。

这将需要多次完成,因此文件生成需要最少或不需要用户交互。虽然这在任何本机程序代码中都很简单,但我发现这对于 chrome 应用程序来说非常困难。 例如。我可以使用 chrome 应用程序在没有用户交互的情况下创建“log_file.txt”和“log_file2.txt”吗? 有什么方法可以让用户 just 指定一个目录,然后从我的应用程序中,我可以在该目录中创建多个文件而无需用户交互? 我尝试在代码中执行此操作,但我需要 chrome.filesystem 的“入口”句柄。 “getEntry”方法需要一个“条目”,因此似乎不可能创建新的“条目”以便我可以写入新文件。 任何想法,将不胜感激!

【问题讨论】:

  • 欢迎来到 Stack Overflow!我看到您编辑了您的问题(这很好)只是为了添加解决方案-事实并非如此。 Stack Overflow 是一个问题和答案的网站。如果您自己的答案很大程度上来自您接受的答案,您可以随时将其作为单独的答案发布。

标签: google-chrome google-chrome-app


【解决方案1】:

有什么方法可以让用户只指定一个目录,然后从我的应用程序中,我就可以在该目录中创建多个文件而无需用户交互?

是的。您需要使用

请求目录
chrome.fileSystem.chooseEntry({type: "openDirectory"}, /*...*/);

只要你有权限

{"fileSystem": ["write", "retainEntries", "directory"]} 

您将能够在该目录中创建文件,并“保留”(保存)目录条目以供以后重复使用,而无需再次询问用户。拥有 DirectoryEntry 后创建文件应该类似于 this

但需要最少的交互(最初要求文件夹)。

【讨论】:

  • 一个目录句柄不能创建一个文件系统对象。要通过 chrome api 获取文件系统对象,必须使用 chrome.requestFileSystem 。这需要一个提供卷 ID 的选项。我认为没有办法从目录句柄转到卷 ID。此外,大多数操作系统似乎都不支持 getVolumeList。
  • A DirectoryEntry 有一个方法 getFile 可用于创建文件。您不需要创建文件系统 - 考虑一下,就我链接的 HTML5Rocks 文章而言,您可以直接获得 fs.root
  • 嘿Xan,对不起,不小心按回车键太快了,请看我之前编辑的评论。
  • 你不需要那个!您需要致电chooseEntry 一次,获得DirectoryEntry,确保您保留并使用它。
  • 非常感谢,使用目录条目的 .getFile 方法有效。 :)
猜你喜欢
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
相关资源
最近更新 更多