Javascript 目录更新后读取HTML5文件系统

Javascript 目录更新后读取HTML5文件系统,javascript,html,html5-filesystem,Javascript,Html,Html5 Filesystem,我试图在Chrome Canary中创建一个与HTML5文件系统交互的动态界面,但我目前遇到了一个绊脚石 我用 dirReader.readEntries(函数(条目){ 如果(!entries.length){ 返回; } 对于(变量i=0;i

我试图在Chrome Canary中创建一个与HTML5文件系统交互的动态界面,但我目前遇到了一个绊脚石

我用

dirReader.readEntries(函数(条目){
如果(!entries.length){
返回;
}
对于(变量i=0;i
第一次得到它们,效果很好。但是如果我创建一个新文件,并再次运行代码,它将不会返回任何结果

我想它使用了一个对文件系统的旧引用或类似的东西,所以我想我需要重新初始化文件系统或目录读取器(这是一个猜测)?处理这个问题的最佳方式是什么


编辑:获取文件系统的新引用确实有效,但这让我有点恶心。更好的方法仍然是非常好的。

优秀的HTML5rocks网站

要读取目录的内容,请创建DirectoryReader并调用 它的readEntries()方法。不能保证目录的所有条目 将在对readEntries()的单个调用中返回。这意味着你需要保持 调用DirectoryReader.readEntries(),直到不再返回结果


我认为这意味着
DirectoryReader
是一次性对象。一旦你读了它,你就不会从中得到更多的数据。因此,与其获取新的文件系统引用,不如尝试创建一个新的
DirectoryReader

,我相信我正在这样做。在控制台中,我执行了
fs.root.createReader()
,并将使用readEntries()函数的回调来设置一个全局变量,使其具有entries的值。该值的长度为零,因此我的算法无论如何都会停止在那里。有趣的是,仔细检查代码后,您可以使用两种不同的方法调用
readEntries
,一种是使用
dirEntry
,另一种是不使用。这似乎是错误的。查看参考的HMTL5rocks站点,了解读取目录的示例。它与您的代码很接近,但有细微的不同。这有点尴尬,但这只是复制它的一个错误。它是
$scope.dirReader.readEntries()
,但这个细节似乎并不相关,我在更改它时意外删除了太多内容。我很抱歉让你想到了一些不真实的问题。如果你给出了完整的背景,这会有所帮助。问题往往不是你首先想到的地方。另外,我假设您已经检查了控制台中的错误消息。所有对dirReader的调用实际上都是$scope.dirReader,但我只是稍后分配给它们,所以它是同一个对象。但是是的,控制台是干净的。当我手动获取一个新的dirReader时,同样的事情也会发生。它将返回条目,它将是空的。我认为这只是一个丑陋的api。
dirReader.readEntries(function (entries) {
        if (!entries.length){
            return;
        }
        for (var i = 0 ; i < entries.length; i++){

            $scope.files.push(entries[i]);
        }

        dirReader.readEntries();

    }, errorHandler);