文字流和資料流
Qt裡面將檔案分為兩大類
1.檔案內容是可讀的文字檔案
2.檔案內容是直接的二進位制檔案
QTextStream :
寫入的資料全部轉換為可讀文字
QDataStream:
寫入的資料全部轉換為二進位制資料
//直接讀寫
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file("C:/Users/hp/Desktop/test.hex");
if( file.open(QIODevice::WriteOnly) )
{
QString dt = "D.T.Software";
double value = 3.14;
file.write(dt.toStdString().c_str());
file.write(reinterpret_cast<char*>(&value), sizeof(value));
file.close();
}
if( file.open(QIODevice::ReadOnly) )
{
QString dt = "";
double value = 0;
dt = QString(file.read(12));
file.read(reinterpret_cast<char*>(&value), sizeof(value));
file.close();
qDebug() << dt;
qDebug() << value;
}
return a.exec();
}
void text_stream_test(QString s) //文字檔案讀寫
{
QFile file(s);
if( file.open(QIODevice::WriteOnly | QIODevice::Text) )
{
QTextStream out(&file);
QString by = "BadogYang";
double value = 3.14;
out << by << endl;
out << value << endl;
file.close();
}
if( file.open(QIODevice::ReadOnly | QIODevice::Text) )
{
QTextStream in(&file);
while( !in.atEnd() ) //文字檔案輸出方式
{
QString line = in.readLine();
qDebug() << line;
}
file.close();
}
}
void data_stream_test(QString s) //資料檔案讀寫
{
QFile file(s);
if( file.open(QIODevice::WriteOnly) )
{
QDataStream out(&file);
QString by = "BadogYang";
double value = 3.14;
out << by;
out << value;
file.close();
}
if( file.open(QIODevice::ReadOnly) )
{
QDataStream in(&file);
QString by = "";
double value = 0;
in >> by;
in >> value;
qDebug() << by;
qDebug() << value;
file.close();
}
}
不同的qt版本預設資料檔案處理方式可能不同,我們可以設定qt的讀寫版本號,需要設定的情況多是不同Qt程式之間的資料傳遞
void setVersion(int v) //設定讀寫版本號
int version() const //返回版本資訊
//文章參考狄泰軟體學院Qt視訊教程