移值 android 读取 assets 里的 sqlite 文件 时只获得了 一行内容 用的是 FileUtils 类读取的

android sqlite 读取 时只获得了 一行内容 用的是 FileUtils 类读取的

获得的内容 只有

SQLite format 3

代码 是

unsigned char * str = NULL;
    ssize_t size;
    str = FileUtils::getInstance()->getFileData(FileUtils::getInstance()->fullPathForFilename("res/sqlite/gamesdata.sqlite"), "rb", &size);
    log("文件 内容 是 :%s size:%zd\n",str,strlen((char*)str));


```


IOS 和安卓均出现读取 不全

IOS我的解决办法 是 

    std::string text = "";
    
    //std::string result = "";
    
    fstream ifile;
    
    ifile.open(FileUtils::getInstance()->fullPathForFilename("res/sqlite/gamesdata.sqlite"));
    
    if (!ifile.good()) {
        ifile.close();
        return ;
    }

    
    std::string result((std::istreambuf_iterator(ifile)),
                    std::istreambuf_iterator());
    
    ifile.close();

    std::string writepath = FileUtils::getInstance()->getWritablePath();
    
    ofstream ofile(std::string(writepath + "/gamesdata.sqlite").c_str());
    
    ofile<<result;
    
    ofile.close();


android 下 因为 是 assets是压缩包 所以 这个办法 失效了  

来人 帮帮忙 :6:

:9: 来人

文件 输出 的内容 也是 SQLite format 3 不是log 输出不全 是 getFileData 获取 的文件内容 根本就不全

第一次进入APP时把sqlite文件复制到可写路径下,然后读取可写路径下的文件

对啊我就是要把文件 复制到 可写路径
我现在第一步就是读取 asset 中的sqlite 文件的内容到string 然后再write 到 可写路径 也就是 data/data/com.xxx.org/file/

现在我读取 assets 中的sqlite 文件 的内容 读取 不完整只读取 出了 SQLite format 3 这几个字。。。

谢谢你的回答:904:

:6:来人解决下呗 :10: 这属于bug 不?

其实是读成功了。但是你这样输出会被截断,因为是读2进制,遇到换行或结束符就停止输出了。试下直接写入,应该是成功的

写入了 我 亲自 到data/data 目录 下 用texteditor 查看 了就 那几个字

:12: 同理可得。。。你的写入是字符串方式当然会这样

unsigned char * str = NULL;
ssize_t size;
str = FileUtils::getInstance()->getFileData(FileUtils::getInstance()->fullPathForFilename("res/sqlite/gamesdata.sqlite"), "rb", &size);
log("----...----文件 内容 是 :%s size:%zd\n",str,strlen((char*)str));


std::string writepath = FileUtils::getInstance()->getWritablePath();

std::ofstream file(std::string(writepath + "/gamesdata.sqlite").c_str(),std::ios::binary);

file<<str;

file.close(); 

这是 采用二进制写入 结果 一样还是 得到那几个 去目录 打开文件 看也是 那几个字 :10:

已经解决 了

经过 rb 改成rb+ 后还不能成功解决 要把 file<< str 这个做法取消 改成
fwrite(str,strlen(str)); // 这里 有个错的存在 就是读取出来 的长度永远是 15 所以
我们要改成
fwrite(str,size); //就是getFileData 返回的文件长度 这样 文件就输出 完整了.

唉 cocos2d 论坛一点也不活跃 问问题 也没几个人回答 .:6: