内存拷贝与文件读写遇到的奇怪问题。

fnwyq 2008-06-25 07:23:26
大家好!

由FileConnection open的一个DataOutputStream:dos;一个较大的byte[]:bBuf(例如64KB);一个较小的byte[]:sBuf(例如6KB);然后将处理好的数据sBuf通过System.arraycopy先拷贝到bBuf,等到bBuf满时再一次性写入dos,如此重复。奇怪的是最后打开dos写好的文件,发现bBuf的头部总是会有一些不定长的全0数据(一定是16字节的倍数,测了几次出现过的长度有11*16 ~~ 16*16,单位:字节),不知道是哪里出了问题?。。。大家有没有遇到过类似情况?

对了,补充一下:以上是在WTK模拟器上的结果,真机还没去试。
...全文
66 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fnwyq 2008-06-25
  • 打赏
  • 举报
回复
惭愧,是有个地方从S60上面移过来时写错了:
Mem::FillZ(iDataBuf+iDataPos, size);
//==>
for (i=0; i<size; i++)
dataBuf[i] = 0; //dataBuf[dataPos + i] = 0;


就知道这种事情本不该发生的...
fnwyq 2008-06-25
  • 打赏
  • 举报
回复
有道理,呵呵。
个人也有这个思路,不过没有老紫竹那么明确。发帖前我将bBuf分别调整到32K和16K做了测试,结果还是一样就没往下降了。。。希望能够快点找出问题。
老紫竹 2008-06-25
  • 打赏
  • 举报
回复
无法确定。这东西你得自己测试了,比如把数据缩短到1K,输出看看。排除大的bBuf的问题。

然后把小的缩短到 10个字节,总之,缩小数据,查找问题所在。

最好
1 大的buf 2个字节
2 小的buf 1个字节

呵呵,问题很快就能找到!

13,096

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧