无法在Titanium中写入文件

时间:2015-03-15 11:53:35

标签: javascript titanium titanium-mobile

我无法在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(图片)解析为文件。

1 个答案:

答案 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); 

希望它可以像我一样帮助那些造成业余错误的人。