• 5356阅读
  • 4回复

文件读写问题【已解决】 [复制链接]

上一主题 下一主题
离线amwzl
 

只看楼主 倒序阅读 楼主  发表于: 2010-04-07
QFie file("D:/a.dat");
    file->open(QIODevice::WriteOnly);
    QDataStream filein2(file);

    filein2.setVersion(QDataStream::Qt_4_6);
    char * buffer = new char[500];
    int len =500;
    for(int i=0;i<500;i++){
        buffer=0xFF;
    }
    filein2.writeRawData(buffer,len);

为甚麽拿二进制编辑查看,什么也没写进去??
[ 此帖被amwzl在2010-04-07 11:46重新编辑 ]
离线浪漫天使
只看该作者 1楼 发表于: 2010-04-07
  1. #include <QtGui/QApplication>
  2. #include <QFile>
  3. #include <QDebug>
  4. int main(int argc, char *argv[])
  5. {
  6.     QApplication a(argc, argv);
  7.     QFile file("D:/a.dat");
  8.     if( !file.open(QIODevice::WriteOnly) )//这个校验也很重要
  9.     {
  10.         qDebug()<<"open error";
  11.         return a.exec();
  12.     }
  13.     QDataStream filein2(&file);
  14.     filein2.setVersion(QDataStream::Qt_4_6);
  15.     char * buffer = new char[500];
  16.     int len =500;
  17.     for(int i=0;i<500;i++){
  18.         buffer[i]=0xFF;
  19.     }
  20.     int mylen = filein2.writeRawData(buffer,len);
  21.     qDebug()<<mylen;
  22.     file.close();//这句很重要
  23.     return a.exec();
  24. }


还有,就是注意你的->于.的用法,以及构造QFile对象时候的参数类型
离线amwzl

只看该作者 2楼 发表于: 2010-04-07
按照你的指导,已经解决了,没有写close. 恩是,我代码贴错了。

用的QFile * file       file = new QFile("D:/a.bat")

谢谢了 浪漫天使
离线浪漫天使
只看该作者 3楼 发表于: 2010-04-07
我建议你还是

QFile file("D:/a.dat");

QFile * file       file = new QFile("D:/a.bat");
好一些

因为 你new的时候没有指定parent的话 应该不会自己释放内存
离线amwzl

只看该作者 4楼 发表于: 2010-04-07
谢谢,我会注意下

对了说到释放内存,char * buffer = new char[500];也是用的new

加上 delete buffer   是否内存就释放掉了。
快速回复
限100 字节
 
上一个 下一个