//orginal file
QFile orginal("test.txt");
if(!orginal.open(QIODevice::ReadOnly)) {
QMessageBox::warning(0, "Read File",
"Read file error!",
QMessageBox::Ok | QMessageBox::Cancel);
}
//destination file
QFile dest("result.ct");
if(!dest.open(QIODevice::WriteOnly)) {
QMessageBox::warning(0, "Write File",
"Write file error!",
QMessageBox::Ok | QMessageBox::Cancel);
}
QDataStream out(&dest);
out.setVersion(QDataStream::Qt_4_7);
out << quint32(0x12345678) << orginal.readAll();
orginal.close();
dest.close();
//test.txt
在访问方式上,Qt 提供了两个更高级别的抽象:使用 QDataStream 进行二进制方式的访问和使用 QTextStream 进行文本方式的访问。这些类可以帮助我们控制字节顺序和文本编码,使程序员从这种问题中解脱出来。
QFile 对于访问独立的文件是非常方便的,无论是在文件系统中还是在应用程序的资源文件中。Qt 同样也提供了 QDir 和 QFileInfo 两个类,用于处理文件夹相关事务以及查看文件信息等。
这次我们先从二进制文件的读写说起。
以二进制格式访问数据的最简单的方式是实例化一个 QFile 对象,打开文件,然后使用 QDataStream 进行访问。QDataStream 提供了平台独立的访问数据格式的方法,这些数据格式包括标准的 C++ 类型,如 int、double等;多种 Qt 类型,如QByteArray、QFont、QImage、QPixmap、QString 和 QVariant,以及 Qt 的容器类,如 QList<T> 和 QMap<K, T>。先看如下的代码:
//result.ct
4Vx 拊诜梦史绞缴希琎t 提供了两个更高级别的抽象:使用 QDataStream 进行二进制方式的访问和使用 QTextStream 进行文本方式的访问。这些类可以帮助我们控制字节顺序和文本编码,使程序员从这种问题中解脱出来。
QFile 对于访问独立的文件是非常方便的,无论是在文件系统中还是在应用程序的资源文件中。Qt 同样也提供了 QDir 和 QFileInfo 两个类,用于处理文件夹相关事务以及查看文件信息等。
这次我们先从二进制文件的读写说起。
以二进制格式访问数据的最简单的方式是实例化一个 QFile 对象,打开文件,然后使用 QDataStream 进行访问。QDataStream 提供了平台独立的访问数据格式的方法,这些数据格式包括标准的 C++ 类型,如 int、double等;多种 Qt 类型,如QByteArray、QFont、QImage、QPixmap、QString 和 QVariant,以及 Qt 的容器类,如 QList<T> 和 QMap<K, T>。先看如下的代码:
我想将test.txt的内容以二进制形式保存于result.ct文件中,即应该全是乱码啊,让别人看不懂的。
但是却只有前面几个字是乱码,其他都一样。 我想实现的就是要让源文件以二进制形式保存于文件,
使其他人看不懂。。
------解决方案--------------------
这应该是编码方式的问题,你里面村的数据没变,即使你用的二进制,打开文件的时候换下编码方式照样可以看见你写的是什么。建议加密。
简单的加密:把二进制数据进行位运算,但这个对有汉字的东西不好用,因为汉字是两个字节一个字。
用一些特殊的加密:我之前用了哈希加密,Qt提供的有这样的方法,你搜索一下。
------解决方案--------------------