[已解决]请问ArrayBuffer(有dataView) 如何通过 jsb.fileUtils.writeDataToFile 写入到本地文件? 现在总是返回参数错误

cocos2dx (JS) 原生IOS 和安卓
版本是3.15.1
代码如下:
var bf=new ArrayBuffer(4);
var dataView=new DataView(bf);
dataView.setInt32(0,12312);

jsb.fileUtils.writeDataToFile(dataView, “一个绝对路径”); //调试获得:参数错误
jsb.fileUtils.writeDataToFile(dataView.buffer, “一个绝对路径”); //调试获得:参数错误
jsb.fileUtils.writeDataToFile(bf, “一个绝对路径”); //调试获得:参数错误

//这里到底要怎么写呀???

另外,
var data = jsb.fileUtils.getDataFromFile(fullTmpFilePath);
jsb.fileUtils.writeDataToFile(data, fullPath); //读取进来的二进制数据可以写入。

难道要全部再转成Uint8Array吗。。。

好吧,解决了:

再转成uint8 array.

var uintbytes=new Uint8Array(buffer);
jsb.fileUtils.writeDataToFile(uintbytes, fullBinPath);

2赞

为啥我这报错呢?
ERROR: TypeError: undefined is not an object (evaluating ‘jsb.fileUtil.getDataFromFile’)

你字写错了 哈哈哈哈

请问我如果想读取ios bundle里的文件,这儿的path应该怎么填啊?谢谢!

我应该是path错了

这个是拼错了,呵呵,但是我path貌似也不对,我用cc.url.raw转换出来的,中间少了一个resources目录,很奇怪,比如我的资源是 dat/test.dat
转换出来是 res/raw-assets/dat/test.dat
而在xcode里面看,目录是 res/raw-assets/resources/dat/test.dat,好奇怪啊,难道我要自己分析字符串加进去?

你把要读取的文件都放在resource文件夹里,
路径应该就是"./res/你的文件路径"
如果放在别的地方,我觉得通过JS拿不到

是在Resources里面,那我得自己人肉拼一下路径了?本以为可以直接从creator的资源路径转换过来

creator我没用过。
但是应该有一个 res.XXX 这样的对象吧 有的话 就是这个了

getDataFromFile的路径能给个例子吗?我这么写
“Resources/res/raw-assets/resources/data/test.dat”
还是报错Assertion failed: (!v.isNull()), function Data_to_seval
谢谢!

试成功了。。路径得从"/res 开始,不能带Resources,cocos的文档太坑了,连个完整的例子都找不到

cocos2d-x 是可以加搜索路径的,加完搜索路径,就可以写相对搜索路径的路径使用文件

是的,外部文件默认为Resources文件夹下,一般没有修改默认文件夹的必要。