我在 Chromebook 上摸索着免费的 Chrome Dev Editor。我正在尝试使用fileSystem
来读取和写入 .txt 文件。这一切都非常紧凑,一点也不像 C 中的那样。我什至无法判断我是否被允许做某事,更不用说在哪里找到合适的地方了。
我认为我可以使用 Files thingy 看到的文件位于允许我在其中播放的沙箱中(意思是应用程序可以访问的文件夹?)根称为下载。果然,如果我使用所有点调用和回调参数进行读取,如 developer.chrome.com/apps/filesystem 中的示例所示,它就可以工作。但是我每次读写都必须有提示。
再用谷歌搜索一下这个技巧:(我认为它实际上是在 stackoverflow 中)一个chrome.runtime
调用,getPackagedDirectoryEntry
,这似乎让我可以处理我的应用程序的文件夹。伟大的!这就是我不需要经过提示的全部内容。无论如何,对于读取文件。
但是随后尝试将相同的技巧应用于写入文件并没有奏效。事实上,它没有做任何可辨别的事情。没有错误,没有抱怨。没有什么。即使带有提示的写入文件工作正常(所以大概我拥有权限和 Blob 构造权。)该怎么办?
这是我的代码:
function test(){
// Samsung 303C Chromebook - Chrome Dev Editor - /Downloads/Daily/main.js
// prompted write
chrome.fileSystem.chooseEntry({type:'saveFile'},function(a){
a.createWriter(function(b){
b.write(new Blob(["Programming fun"],{type:'text/plain'}));
},function(e){trace.innerText = 'error is ' + e;});
});
// unprompted read
chrome.runtime.getPackageDirectoryEntry(function(a){
a.getFile('text.txt',{},function(b){
b.file(function(c){
var d = new FileReader();
d.onloadend = function(){trace.innerText = this.result;};
d.readAsText(c);
});
});
});
// unprompted write - why not?
chrome.runtime.getPackageDirectoryEntry(function(a){
a.getFile('new.txt',{create:true},function(b){
b.createWriter(function(c){
c.write(new Blob(["Miss Manners fan"],{type:'text/plain'}));
},function(e){trace.innerText = 'error is ' + e;});
});
});
}