我无法在Titanium Studio中写入文件。
特别是.json
文件。编译通过代码,没有抛出任何异常。
这是我的相关代码部分,我在添加元素之前将文件解析为var并将其字符串化以进行回写。 阅读工作完美,添加元素也是如此,这就是写作过程中存在问题
var file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory,'data.json');
var jsontext = file.read().toString();
var jsondoc = JSON.parse(jsontext);
jsondoc['feedlist'].push({
"picloc":imagename,
"title":titlef.value,
"desc1":descf1.value,
"desc2":descf2.value,
"desc3":descf3.value
});
jsontext = JSON.stringify(jsondoc);
file.write(jsontext); // write(data,[append])
注意:我查阅了文档并完成了一些自己的搜索,有些人建议使用“Filestream”代替普通文件以及.close()
,我还没有让他们工作,但它可能是解决方案的指针,如果有人知道如何让它工作
提前致谢。
编辑:这个问题被标记为重复,最初我认为这是两个单独的问题,一个是关于仅仅将文本写入文件。另一个是将event.media(图片)解析为文件。
答案 0 :(得分:0)
我现在正在使用它,问题是我试图在只读目录中写入文件
Ti.Filesystem.resourcesDirectory:应用程序资源所在的只读目录
Ti.Filesystem.applicationDataDirectory:您的应用可访问的读/写目录。将特定于应用程序的文件放在此目录中。 该目录的内容仍然存在 直到您删除文件或用户卸载应用程序
这是我的代码,目录已修改
var sesfile = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory,'data2.json');
var jsontext = sesfile.read().toString();
var jsondoc = JSON.parse(jsontext);
jsondoc['feedlist'].push({
"picloc":imagename,
"title":titlef.value,
"desc1":descf1.value,
"desc2":descf2.value,
"desc3":descf3.value
});
jsontext = JSON.stringify(jsondoc);
sesfile.write(jsontext,false);
如果您无法找到数据目录,只想从那里加载文件。 (在我的情况下,它在项目中不存在,也不会使用Webpreview压缩创建) 你可以像第一次那样做bootstrap-ish类型的指令
var rdfile = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory,'data.json');
var sesfile = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory,'data2.json');
var jsontext = rdfile.read().toString();
var jsondoc = JSON.parse(jsontext);
sesfile.write(jsontext);
希望它可以像我一样帮助那些造成业余错误的人。