在QT下怎么对文件头的读写啊
请问一下在QT下怎么对 文件头 的读写啊?
注意看是 “文件头” 而不是 “头文件” 哟
网上百度了很久,几乎找不到先关资料,有也是貌似API或者是C语言的,可是我看不懂那些例子,有没有好心人可以教一下在QT下如何对 文件头 进行读写?
本人学生,最近在做一个功能,就是把 一个文件的文件头进行修改,此时它就会变成一个不可识别的文件类型,然后在把它的图标关联到一个自定义的图标里面。
有没有牛人提供相关的具体操作实现?拜托了·····
最近比较赶时间,就差这个功能了
因为是用户选择的任何文件。。。 我听老师说每一个文件(除了txt和文件夹没有)都带有一个“文件头”,想要把文件头给保存下来,然后替换成自己的文件头,这个文件头要可以显示到自己预设的图标的。。。
有没有操作思路提供一下?LZ百度能力实在是弱爆了····
先QFile把文件加载过来, 然后QDateStream把文件和流关联起来. 然后直接操作流就可以了
QFile test_Data("13.png");
读取
if (!test_Data.open(QIODevice::ReadOnly)) //以只读和截断方式打开设备
{
qDebug() << "could not open file for writing";
return;
}
QDataStream in(&test_Data);
in.setVersion(QDataStream::Qt_4_8);
in >> fileMagic;
qDebug() << fileMagic <<endl;
test_Data.close();
6楼的朋友你好,我是这样进行读取的,不知道读出来的数据是什么类型的呢?quint32吗?
我想把一个文件的第一个quint32读出来,保存下来,然后进行修改一个已知的quint32值,然后文件就会变得无法识别,然后再修改回原来的值,这样文件就能打开了。
这思路感觉起来是没问题的,怎么我实际操作起来就不行?可能是因为我对Qt的数据类型不了解,转换不好,导致修改之后再修改回来文件依然损坏
所以Qt要怎么修改呢?
,比如一个文件里面的内容是 “1234567890”
破坏文件就是 直接写入前4位(直接写入好像会覆盖掉原值吧?) “abcd567890”
此时文件变得无法识别。破坏之前把前4位保存下来(1234)
恢复文件就是直接写入前4位(提取之前保存的) 变成“1234567890”
而看你的代码,貌似可以做的更绝一点,就是直接保存整个文件的内容(你代码的ba),破坏就随便写入,恢复的时候就把(ba)写回去0.0
其实我现在一直在做一个小软件,老师让我做的,实现文件加密功能,加密的实际就是保存文件的“文件头”然后再写入一个自定义的值,解密的时候就把文件头给写回去。
我奇怪的是,这个写入的话,不是直接覆盖掉同位置的内容的么?读出来的文件头的类型是不是quint32?
后来自己摸索摸索着写出最终有用的代码,在回过头来看你的代码,发现原来自己摸索了那么久,最终的代码就是你这个,不过跟之前相比现在已经更加理解了这段代码这个例子我反复看了,按照上面来,还是不行,估计跟我读出来的不一样,我qDebug()显示的是一长串的数字。。
quint32 fileMagic = 305419896;
in >> fileMagic;
这样。。。 因为读的时候,显示出来的就是 305419896.。。。。要怎么操作呢?先谢谢了···我实在是找了太久了。。。