读书人

QT 对资料头的读写

发布时间: 2013-01-08 14:02:14 作者: rapoo

QT 对文件头的读写
请问一下在QT下怎么对 文件头 的读写啊?
注意看是 “文件头” 而不是 “头文件” 哟
网上百度了很久,几乎找不到先关资料,有也是貌似API或者是C语言的,可是我看不懂那些例子,有没有好心人可以教一下在QT下如何对 文件头 进行读写?

本人学生,最近在做一个功能,就是把 一个文件的文件头进行修改,此时它就会变成一个不可识别的文件类型,然后在把它的图标关联到一个自定义的图标里面。

有没有牛人提供相关的具体操作实现?拜托了

最近比较赶时间,就差这个功能了
QT 对资料头的读写
[解决办法]
先QFile把文件加载过来, 然后QDateStream把文件和流关联起来. 然后直接操作流就可以了
[解决办法]

引用:
引用:二进制只是一串二进制编码,完全看你怎么读出来.怎么读出来的,再怎么写回去。

7楼的朋友你好,我是这样读出来的:
in.setVersion(QDataStream::Qt_4_8);
quint32 fileMagic;
in >> fileMagic;
qDebug() << fileMag……


void MainWindow::on_actionLock_triggered()
{
QString str = QFileDialog::getOpenFileName();
if(str.isEmpty()){
return;
}
QByteArray ba;
{
QFile file(str);
if(!file.open(QFile::ReadOnly)){
return;
}
QDataStream in(&file);
in >> m_d;
ba = file.readAll();
}
{
QFile file(str);
if(!file.open(QFile::WriteOnly)){
return;
}
QDataStream out(&file);
out << 0xFFFF;
out << ba;
}

}

上面的代码是破坏文件的。
void MainWindow::on_actionUnlock_triggered()
{
QString str = QFileDialog::getOpenFileName();
if(str.isEmpty()){
return;
}
QByteArray ba;
{
QFile file(str);
if(!file.open(QFile::ReadOnly)){
return;
}
QDataStream in(&file);
quint32 sk;
in >> sk;
ba = file.readAll();
}
{
QFile file(str);
if(!file.open(QFile::WriteOnly)){
return;
}


QDataStream out(&file);
out << m_d;
out << ba;
}

}


上面的是恢复文件的。
用上面的代码需要声明一个 quint32 m_d的类变量储存文件的前4个字节。

读书人网 >QT开发

热点推荐