【问题标题】:Cannot write to file in Titanium无法在 Titanium 中写入文件
【发布时间】:2015-03-15 11:53:35
【问题描述】:

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

【问题讨论】:

标签: javascript titanium titanium-mobile


【解决方案1】:

我现在可以工作了,问题是我试图写入只读目录中的文件

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 编译创建) 你可以先做这样的引导式指令

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

希望它能帮助像我一样犯业余错误的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    相关资源
    最近更新 更多