我试图在启动时读取目录的内容。文件夹 config
与 manifest.json
处于同一级别。
我尝试了以下代码:
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.directoryEntry = window.directoryEntry || window.webkitDirectoryEntry;
function onInitFs(fs) {
fs.root.getDirectory('config', {}, function(dirEntry){
var dirReader = dirEntry.createReader();
dirReader.readEntries(function(entries) {
for(var i = 0; i < entries.length; i++) {
var entry = entries[i];
if (entry.isDirectory){
console.log('Directory: ' + entry.fullPath);
}
else if (entry.isFile){
console.log('File: ' + entry.fullPath);
}
}
}, errorHandler);
}, errorHandler);
};
window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);
但是永远不会调用 getDirectory
的回调。
我的 manifest.json
有 {"fileSystem": ["write", "directory"]}
有 权限
。
最佳答案
首先,您的 manifest.json 可能与此处无关。 fileSystem
权限适用于 chrome.fileSystem API ,而不是您正在使用的 HTML 文件 API。我认为您不需要 list 中的任何特殊权限即可使用这些功能。
其次,如果 getDirectory 的成功回调从未被调用,那么您的错误处理程序应该被调用。它被调用了吗?如果是这样,有什么论据?
我已经在 Chrome Canary (Chrome 35) 中试过这段代码,它工作正常,有一个变化:我必须先创建目录。没有像
这样的电话fs.root.getDirectory("config", {create: true}, function(newDirEntry) {
console.log(newDirEntry);
}, makeErrorHandler("createDir"));
首先,我从您的 getDirectory 调用中收到一个 NotFoundError
错误。
发生这种情况的原因可能是您尝试使用 TEMPORARY 文件系统而不是 PERSISTENT 文件系统。如果您希望目录在启动时出现,那么您应该请求它是持久的。
或者,将键 create: true
添加到您的 getDirectory 选项,并处理目录不存在但已创建的情况。
关于javascript - 列出chrome打包应用中的目录内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22141516/