• 8622阅读
  • 4回复

[讨论]关于QFile写二进制数据的问题 [复制链接]

上一主题 下一主题
离线hesternal
 

只看楼主 倒序阅读 楼主  发表于: 2011-06-28
关于QFile写二进制数据的问题
我用QFile进行文件的读写,写的数据是二进制数据。
打开:

save_file->open(QIODevice::Append);
写数据:
save_file->write(read_buf,read_num);


比如read_buf里的数据是aa 55 aa 55,
那么实际看到文件里的结果是 aa 55 aa 55 0d 0a
换句话说,多了\r\n


我怀疑是TextMode的问题,特意在文件打开后,加了一句:
save_file->setTextModeEnabled(false);
但是还是没有任何效果。


我debug跟踪到内部,TextMode确实是false,在write和flush内部也没有看到任何添加0d 0a的内容,
请问有人过这方面的经验吗。
离线jdwx

只看该作者 1楼 发表于: 2011-06-28
那你再把数据读回来看看。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线shiroki

只看该作者 2楼 发表于: 2011-06-28
我试了一下, 没发现有楼主说的问题阿
        QFile file("./binary.txt");
        file.open(QIODevice::WriteOnly);
        file.write("1234",4);
        file.close();

这个文件写完之后大小是4个byte, 所以应该没有楼主说的回车和换行
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线hesternal

只看该作者 3楼 发表于: 2011-06-28
写的文件大小确实是正确的,写进去十个字节,在外面看文件大小也是十个字节,读回来也是正确的。
但是我用的vim+%!xxd查看写好的二进制文件,在结尾处就能看到多出来0d和0a(我也用vim看过其他的二进制文件是没有的),后来又随便在网上下了一个Hex Editor的二进制编辑软件,打开文件却看不到了,弄的我很崩溃。
离线hesternal

只看该作者 4楼 发表于: 2011-06-28

这个文件在外面看属性是358个字节,0d 和0a这两个字节分别是359和360是多出来的。
虽然这文件不影响使用但是很不爽,不知道为什么
快速回复
限100 字节
 
上一个 下一个