既然你说过你不打算在任何地方托管它,你可以将你的代码移动到一个打包的应用程序。从那里你可以使用chrome.fileSystem api。
使用chooseEntry()向用户询问他们希望应用程序能够读取/写入哪个目录。在回调中检查返回的条目是否有效,然后将其存储以供以后使用。
var userDir = null;
chrome.fileSystem.chooseEntry({type: 'openDirectory'}, function(theEntry) {
//do sanity check(s) and store it
if(!theEntry.isDirectory) {
//report error
return;
}
userDir = theEntry;
});
一旦你有一个目录条目参考比你可以使用getFile()得到一个文件的引用,创建它,如果它不存在,这同样适用于创建子目录刚刚替补getFile与getDirectory。然后使用createWriter()获得一个FileWriter实例来写入该文件。
function saveData(filename,data){
if(!userDir) {
//report error
return;
}
userDir.getFile(filename, {create: true}, function(fileEntry) {
if(!fileEntry || !fileEntry.isFile){
//report error
return;
}
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
//report success
};
fileWriter.onerror = function(e) {
//report error: e.toString()
};
//Create a Blob from the data and write it.
var blob = new Blob([data], {type: 'text/plain'});
fileWriter.write(blob);
});
});
}
//at some point after user has selected directory
saveData("log.txt","Some data");
检查错误报告和其他必需品的各种文件。
如果您只想询问用户一次目录使用retainEntry()保存目录条目的ID。并使用restoreEntry()来获取该目录的引用。从那里只需要执行saveData函数中的步骤。检查其他进程的文档,例如读取文件。