成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Qt 文件處理詳細(xì)講解教程 上篇

移動(dòng)開(kāi)發(fā)
本文介紹的是Qt 文件處理的內(nèi)容,有讀寫(xiě)文本類、操作二進(jìn)制類、QTemporaryFile臨時(shí)類,等一些常用的類的介紹。

本文介紹的是Qt 文件處理的內(nèi)容。Qt提供了QFile來(lái)進(jìn)行文件處理,為了更方便地處理文本文件或二進(jìn)制文件,Qt還提了QTextStream和QDataStream,處理臨時(shí)文件可以使用QTemporaryFile,獲取文件信息可以使用QFileInfo,處理目錄可以使用QDir.監(jiān)視文件和目錄變化可以使用QFileSystemWatcher. 。

讀寫(xiě)文本文件

QFile提供了讀寫(xiě)文件的接口,QFile可以讀寫(xiě)文本文件,二進(jìn)制文件Qt資源文件,也可以使用更方便的QTextStream,QDataStream讀取文本文件和二進(jìn)制文件,要打開(kāi)一個(gè)文件,可以在構(gòu)造函數(shù)中指定文件名,也可以在任何時(shí)候使用setFileName()函數(shù)設(shè)置文件名,打開(kāi)文件使用open函數(shù),關(guān)閉文件使用close函數(shù)。QFile中可以使用QIODevice中繼承的readLine()函數(shù)讀寫(xiě)文本文件的一行。如:

  1. QFile file("zeki.txt");  
  2. if(file.open(QIODevice::ReadOnly))  
  3. {  
  4.     char buffer[2048];  
  5.     qint 64 lineLen=file.readLine(buffer,sizeof(buffer));  
  6.     if(lineLen!=-1)  
  7.     {  
  8.        qDebug<       }  

如果讀取成功,readLine返回實(shí)際讀取的字節(jié)數(shù),如果讀取失敗則返回-1

QTextStream提供了更為方便的接口來(lái)讀寫(xiě)文本,QTextStream可以操作QIODevice,QByteArray,QString.QTextStream使用流操作符,可以方便地讀寫(xiě)單詞,行和數(shù)字。為了產(chǎn)生文本,QTextStream提供了填充,對(duì)齊和數(shù)字格式化的格式選項(xiàng)。如

  1. QFile data("test.txt");  
  2. if(data.open(QFile::WriteOnly|QFile::Truncate))  
  3. {  
  4.      QTextStream out(&data);  
  5.      out<    } 

QTextStream的格式化函數(shù)

qSetFieldWidth(int width)  設(shè)置字段寬度
qSetPadChar(QChar ch)      設(shè)置填充字符
qSetRealNumberPrecision(int precision) 設(shè)置實(shí)數(shù)精度

在QTextStream中使用的默認(rèn)編碼是QTextCodec::codecForLocal()函數(shù)返回的編碼,同時(shí)能夠自動(dòng)檢測(cè)Unicode。也可以使用QTextStream::setCodec(QTextCodec *codec)函數(shù)設(shè)置的流編碼。

操作二進(jìn)制文件

QDataStream類提供了將二進(jìn)制文件串行化的功能,QDataStream實(shí)現(xiàn)了c++基本數(shù)據(jù)類型的串行化,如char,short,int char* 更復(fù)雜的數(shù)據(jù)類型串行化通過(guò)將數(shù)據(jù)類型分解為基本的數(shù)據(jù)類型來(lái)完成。下面用來(lái)寫(xiě)二進(jìn)制數(shù)據(jù)到數(shù)據(jù)流。

  1. QFile file("binary.dat");  
  2. file.open(QIODevice::WriteOnly);  
  3. QDataStream out(&file);  
  4. out< out<<(qint32)42<<(qint32)96; 

將上面寫(xiě)入的文件讀入的過(guò)程為:

  1. QFile file("binary.dat");  
  2. file.open(QIODevice::ReadOnly);  
  3. QDataStream in(&file);  
  4. QString str;  
  5. qint32 x,y;  
  6. in>>str>>x>>y; 

每一個(gè)條目都可以定義的二進(jìn)制格式寫(xiě)入文件,Qt中的很多類型,包括QBrush,QColor,QDateTime,QFont,QPixmap,QString,QVariant等都可以寫(xiě)入數(shù)據(jù)流。

如果需要讀取原始數(shù)據(jù),可以使用readRawData()讀取數(shù)據(jù)到預(yù)先定義好的char *緩沖區(qū),寫(xiě)原始數(shù)據(jù)使用writeData(),讀寫(xiě)原始數(shù)據(jù)需要對(duì)數(shù)據(jù)進(jìn)行編碼和解碼。

下面例子演示了使用QDataStream進(jìn)行讀寫(xiě)文件的過(guò)程。

  1. #include  
  2. #include  
  3. using namespace std;  
  4. int main(int argc,char **argv)  
  5. {  
  6.    QCoreApplication app(argc,argv);  
  7.    QFile file("binary.file");  
  8.    file.open(QIODevice::WriteOnly|QIODevice::Truncate);  
  9.    QDataStream out(&file);  
  10.    out<    out<    out<<(qint32)21;  
  11.    file.close();  
  12.      
  13.    file.setFileName("binary.file");  
  14.    if(!ifle.open(QIODevice::ReadOnly))  
  15.    {  
  16.       cout<<"打開(kāi)文件錯(cuò)誤!";  
  17.       return 1;  
  18.    }  
  19.    QDataStream in(&file);  
  20.    QString name;  
  21.    QDate birthday;  
  22.    qint32 age;  
  23.    in>>name>>birthday>>age;  
  24.       qDebug()<       cout<       qPrintable(birthday.toString("yyyy MMMM dd dddd"));  
  25.    file.close();  
  26.    return 0;  

在例子中,QDataStream類寫(xiě)入了姓名(QString),生日(QDate),和年齡(qint32)三個(gè)數(shù)據(jù),讀取時(shí)使用相同的類型讀出。QDataStream可以讀取任意以QIODevice為基類生成的對(duì)象產(chǎn)生的數(shù)據(jù)。如QTcpSocket,QUdpSocket,QBuffer,QFile,QProcess等類的數(shù)據(jù)??梢允褂肣DataStream在QAbstractSocket一端寫(xiě)入數(shù)據(jù),另一端使用QDataStream讀取數(shù)據(jù),這樣就免去了繁瑣的高低端字節(jié)轉(zhuǎn)換過(guò)程。

臨時(shí)文件

實(shí)際應(yīng)用中有時(shí)可能需要使用臨時(shí)文件,Qt中提供QTemporaryFile來(lái)提供臨時(shí)文件。QTemporayFile可以安全地創(chuàng)建一個(gè)***無(wú)二的臨時(shí)文件。臨時(shí)文件通過(guò)open()來(lái)創(chuàng)建。Qt可以保證臨時(shí)文件不會(huì)重復(fù)。在臨時(shí)文件對(duì)象銷毀后,將自動(dòng)刪除該臨時(shí)文件。臨時(shí)文件通過(guò)close()關(guān)閉后還可以打開(kāi),只要臨時(shí)文件對(duì)象還沒(méi)有銷毀,臨時(shí)文件就一直存在并由QTemporaryFile內(nèi)部保持打開(kāi)。系統(tǒng)的臨時(shí)目錄可以通過(guò)QDir::tempPath()來(lái)獲取,unix/linux系統(tǒng)上的臨時(shí)目錄通常時(shí)/temp在windows上通常是TEM/TMP指定

小結(jié):有關(guān)Qt文件處理先到這,想要對(duì)關(guān)Qt文件處理,了解更多的話,請(qǐng)關(guān)注 Qt 文件處理詳細(xì)講解教程 下篇。

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-17 13:39:47

Qt 文件

2011-07-01 14:14:34

Qt 事件

2011-06-22 14:30:44

QT 多線程 線程

2011-07-04 10:33:22

QT

2011-07-06 10:32:07

Xcode

2011-07-06 10:46:33

Xcode

2023-03-17 08:11:25

2011-06-17 09:19:03

Qt 4.5.1 Sqlite 移植

2011-07-04 17:26:00

Qt SQLite

2011-04-07 17:27:52

Policing

2011-04-07 17:39:57

Shapping

2011-07-05 18:32:52

QT 信號(hào) 機(jī)制

2011-06-23 16:24:21

Qt Embedded 交叉編譯

2011-02-23 15:38:27

FileZillaSe

2009-12-18 16:18:15

Fedora proc

2011-06-17 16:47:12

Qt Eclipse Windows

2010-02-23 14:17:20

WCF配置文件

2011-06-27 13:32:21

Qt 數(shù)據(jù)庫(kù) QSqlQueryM

2010-08-26 10:28:43

2011-06-30 10:09:26

QT Graphics View
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩一区二区三区在线观看 | 成人免费视频一区二区 | 一区二区三区在线播放 | 日韩一区二区在线视频 | 午夜精品三区 | 亚洲天天干 | 久久久久久国产 | 在线免费观看毛片 | 在线观看成年视频 | 日韩伦理一区二区三区 | 麻豆国产一区二区三区四区 | 91久久久久久久久久久久久 | 国产精品美女 | 特黄毛片视频 | 国产人免费人成免费视频 | 日韩毛片免费看 | 欧美日韩大陆 | 国产成人在线播放 | 亚洲精品久久久久久一区二区 | 国产一区二区在线免费视频 | 亚洲成年人免费网站 | 碰碰视频| 波多野结衣在线观看一区二区三区 | 91精品国产色综合久久 | hitomi一区二区三区精品 | 999久久久久久久久6666 | 欧美午夜一区二区三区免费大片 | 男人的天堂亚洲 | 一区二区三区中文 | 精品国产欧美一区二区三区成人 | 中文字幕在线视频免费视频 | 成人免费在线播放视频 | 国产精品视频一二三 | 超碰国产在线 | 91久久久久久久 | 中文天堂在线观看 | 一区二区三区高清 | 日韩久久精品视频 | 99精品99| 中文字幕亚洲一区二区三区 | 在线一区观看 |