2013-05-15 42 views
0

我试图做一个动态的界面与Chrome Canary版的HTML5文件系统进行交互,但我目前打的绊脚石。阅读HTML5文件系统后,目录更新

我用

dirReader.readEntries(function (entries) { 
     if (!entries.length){ 
      return; 
     } 
     for (var i = 0 ; i < entries.length; i++){ 

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

     dirReader.readEntries(); 

    }, errorHandler); 

,让他们在第一时间,工作正常。但是如果我创建一个新文件并再次运行代码,它将不会返回任何内容。

我想象它是使用旧参考文件系统或类似的东西,所以我想我需要重新初始化文件系统或目录阅读器(这是一个猜测)?处理这个问题的最好方法是什么?

编辑:获取一个新的参考文件系统的工作,但让我吐了一点。一个更好的方式来做到这一点仍然很好。

回答

1

优秀HTML5ROCKS网站file handling

要读取目录的内容,创建一个DirectoryReader并调用 其readEntries()方法。无法保证所有目录的条目 都将通过一次调用readEntries()返回。这意味着您需要保持 调用DirectoryReader.readEntries(),直到不再有结果返回。

我读到,这意味着DirectoryReader是一个对象。一旦你阅读了它,你将不会获得更多的数据。因此,不要获取新的文件系统参考,请尝试创建新的DirectoryReader

+0

我相信我就是这么做的。在控制台中,我做了'fs.root.createReader()',并使用readEntries()函数的回调函数来设置一个全局变量以获得条目的值。该值的长度为零,因此我的算法无论如何都会停止。 –

+0

有趣的是,仔细检查你的代码,你用'dirEntry'调用'readEntries'两种不同的方式,一次不用。这似乎是错误的。查看引用的HMTL5rocks站点以查看目录的示例。它接近你的代码,但略有不同。 – HBP

+0

这有点令人尴尬,但这只是一个错误复制它。它是'$ scope.dirReader.readEntries()',但这个细节看起来并不相关,并且在改变它时意外删除了太多。我很抱歉让你想到一些不是真正的问题。 –