欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请教如何用 qdatastream 读取bin文件

更新时间: 2014-01-05 02:43:36 责任编辑: Author_N1

 

请问怎么用 QDataStream 读取bin文件
 如题,
    QFile *loadFile=new QFile(loadFile_name);
    QDataStream in(loadFile);
    if(!loadFile->open(QIODevice::ReadOnly))
    {
        QMessageBox::warning(this,"Error","Cann't open file",QMessageBox::Ok);
        ui->textEdit->insertPlainText(QString("open %1 failed\n").arg(loadFile_name));
        auto_scroll();
        return;
    }
    dataLen=in.readRawData(dataBuf,1024*200); //其中dataBuf为char类型预先申请的空间

请问 各位老大,采用上述的方法能够读取*.bin文件中的数据么?

--参考方法--
文件的后缀并不能说明什么,除了大家约定俗成的文件格式,例如png、jgp等
这里楼主的代码是可以读出文件的,是以二进制的形式读出的,数据没有编码。
但数据具体代表什么还需要你对这里的bin文件具体怎么定义的有了解。

另外你可以根据dataLen的值来判断读取是否成功,没有成功dataLen=-1,成功dataLen=读取的字节数。

参考assistant:
int QDataStream::readRawData ( char * s, int len )
Reads at most len bytes from the stream into s and returns the number of bytes read. If an error occurs, this function returns -1.
The buffer s must be preallocated. The data is not encoded.
See also readBytes(), QIODevice::read(), and writeRawData().

--参考方法--
除非你能确定这个bin文件是用 QDataStream生成的,否则不建议使用QDataStream
--参考方法--
文件操作还是直接用C++的ifstream来读取,比较qt的简单得多。
    file.open("test.bin",ios::binary
--参考方法--
ios::ate);
    int size=file.tellg(); //通过标志ate得到文件大小。
    char* buf=new char[size];
    file.seekg(0,ios::beg); //把读取位置重新写入文件开头。
    file.read(buf,size);
    file.close();
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:43:36
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/13580/
本文WWW.DOC100.NET DOC100.NET版权所有。