打印

ARM写文件问题

[复制链接]
2613|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2013-2-28 18:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大神,我用QT写了个应用程序,对一个文件中写四个字节的数据,写完立马断电,然后重启系统,结果没把上次写进去的数据正常读出,也就是说上次写到文件中的数据没有保存。但是写完数据等待几秒断电就能正确读出数据,以下是我的程序

void MainWindow::keyPressEvent(QKeyEvent *k)
{

if(k->key()==Qt::Key_Return)
{
    qDebug()<<"123";
    QString s1;
    s1=ui->lineEdit->text();
    qDebug()<<s1;
    int i;
    i=s1.toInt();
    qDebug()<<i;
    QFile file("xxx");
    file.open(QIODevice::WriteOnly);
    QDataStream out(&file);
    out <<s1.toInt();
    file.close();


}

if(k->key()==Qt::Key_F1)
{
    int ss;
    QFile file1("xxx");
    if(file1.open(QIODevice::ReadOnly))
    {
        QDataStream in(&file1);
        in >>ss;
        qDebug()<<ss;
        file1.close();
   }

}

}
按ENTER键写数据,按F1键读数据,程序要怎样写才能实现数据写完立马断电可以保存数据,这个和文件系统或者内核有关系吗,如果有关系要怎么修改?

相关帖子

沙发
txcy| | 2013-2-28 18:33 | 只看该作者
跟文件系统和内核都有关系,可能是被存储器缓存了。比如操作系统为了避免对FLASH的频繁操作,会将所有写操作缓存在内存里,定时同步到FLASH中。如果是这种机制,那么你写完文件之后,需要加一次强制同步。

使用特权

评论回复
板凳
baidudz| | 2013-2-28 18:51 | 只看该作者
了解一下LINUX读写文件的方式,默认情况下,你往一个文件写数据时,内存不一定会马上就写到IO设备,如果要改成调用write后,马上写入IO,可以用ictol设置成这样的方式,具体在 《Unix/Linux编程实践教程》 这本书中有介绍

使用特权

评论回复
地板
火箭球迷| | 2013-2-28 18:55 | 只看该作者
你试下直接调用write()会有这问题出现没

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝