我正在尝试在启动时读取目录的内容。文件夹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"]}
已permissions
。
答案 0 :(得分:4)
首先,你的manifest.json可能与此无关。 fileSystem
权限适用于chrome.fileSystem API,而不是您正在使用的HTML文件API。我认为您的清单中不需要任何特殊权限来使用这些功能。
其次,如果从未调用过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选项,并处理目录不存在但已创建的情况。
答案 1 :(得分:0)
@supercalifragilistichespirali - 包目录是出于安全原因而读取的,您无法在那里进行任何更改。如果要存储数据,则应使用沙盒文件系统,Ian在本回答中对此进行了描述。