版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 今天學習QT的文件操作1、QIODevice直接繼承自QObjectQIODevice類是輸入/輸出設(shè)備的基類。QIODevice為設(shè)備提供了公共實現(xiàn)和抽象接口用于讀寫塊數(shù)據(jù)。QIODevice是一個抽象類,不能被實例化。被Q3Socket,Q3SocketDevice,QAbstractSocket,QBuffer,QFile,QLocalSocket,QNetworkReply,QProcess繼承.=2、QFile繼承自QIODeviceQFile類是一個操作文件的輸入/輸出設(shè)備。QFile是用來讀寫二進制文件和文本文件的輸入/輸出設(shè)備。QFile可以自己單獨被使用,但是如果和QDat
2、aStream或QTextStream一起使用將更加方便。文件名通??梢酝ㄟ^構(gòu)造函數(shù)來傳遞,但也可以使用setName()來設(shè)置。目錄分隔符在任何操作系統(tǒng)下都使用“/,“/不被支持。你可以通過exists()來檢查一個文件是否存在并且可以通過remove()來移去一個文件。更多操作系統(tǒng)相關(guān)的高級文件系統(tǒng)操作QT提供了QFileInfo和QDir類.文件可以用open()來打開、用close()來關(guān)閉、用flush()來刷新。數(shù)據(jù)通??梢允褂肣DataStream或者QTextStream進行讀寫,但你也可以使用read(),readLine(),readAll(),write()讀寫。QFil
3、e也支持getChar(),putChar(),和ungetChar()size()可以返回文件的大小。你可以通過使用pos()函數(shù)得到當前文件位置或者使用seek()移到一個新的文件位置。如果你到了文件的末尾,atEnd()返回真。例1:一行一行讀取文件c-sharpview plaincopy1. #include2. #include3. #include4. #include5. intmain(intargc,char*argv)6. 7. QCoreApplicationa(argc,argv);8. /中文支持9. QTextCodec*codec=QTextCodec:code
4、cForName(UTF-8);10. QTextCodec:setCodecForCStrings(codec);11. 12. QFilefile(/home/administrator/testdir/test.txt);13. if(!file.open(QIODevice:ReadOnly|QIODevice:Text)14. qDebug()Cantopenthefile!endl;15. 16. while(!file.atEnd()17. QByteArrayline=file.readLine();18. QStringstr(line);19. qDebug()str;20
5、. 21. returna.exec();22. 使用QTextStream讀取文件cppview plaincopy1. #include2. #include3. #include4. #include5. intmain(intargc,char*argv)6. 7. QCoreApplicationa(argc,argv);8. /中文支持9. QTextCodec*codec=QTextCodec:codecForName(UTF-8);10. QTextCodec:setCodecForCStrings(codec);11. /QTextCodec:setCodecForTr(co
6、dec);12. /QTextCodec:setCodecForLocale(codec);13. QFilefile(/home/administrator/testdir/test.txt);14. if(!file.open(QIODevice:ReadOnly|QIODevice:Text)15. qDebug()Cantopenthefile!endl;16. 17. QTextStreamin(&file);18. while(!in.atEnd()19. QStringline=in.readLine();20. qDebug()line;21. 22. returna.exec
7、();23. QDataStream 重載了運算符了讀數(shù)據(jù)cppview plaincopy1. #include2. #include3. #include4. #include5. intmain(intargc,char*argv)6. 7. QCoreApplicationa(argc,argv);8. /中文支持9. QTextCodec*codec=QTextCodec:codecForName(UTF-8);10. QTextCodec:setCodecForCStrings(codec);11. /QTextCodec:setCodecForTr(codec);12. /QTe
8、xtCodec:setCodecForLocale(codec);13. QFilefile(/home/administrator/testdir/test.txt);14. if(!file.open(QIODevice:ReadWrite|QIODevice:Text)15. qDebug()Cantopenthefile!endl;16. 17. QTextStreamstream(&file);18. QStringline_in;19. /while(!stream.atEnd()20. /line_in=stream.readLine();21. /qDebug()line_in
9、;22. /23. /stream.seek(stream.pos();24. stream.seek(file.size();/將當前讀取文件指針移動到文件末尾25. intcount=0;26. while(count10)27. streamQObject:trUtf8(新建行:)+count/n;28. 29. stream.seek(0);/將當前讀取文件指針移動到文件開始30. while(!stream.atEnd()31. line_in=stream.readLine();32. qDebug()line_in;33. 34. returna.exec();35. 3、QDi
10、r QDir類提供了訪問目錄結(jié)構(gòu)和他們的內(nèi)容。 QDir類提供了訪問目錄結(jié)構(gòu)和它們的內(nèi)容的與平臺無關(guān)的方式。QDir用來操作路徑名稱、關(guān)于路徑和文件的訪問信息和操作底層文件系統(tǒng)。QDir使用相對或絕對文件路徑來指向一個文件。絕對路徑是從目錄分隔符“/”或者帶有一個驅(qū)動器標識(除了在Unix下)。如果你總是使用“/”作為目錄分隔符,Qt將會把你的路徑轉(zhuǎn)化為符合底層的操作系統(tǒng)的。相對文件名是由一個目錄名稱或者文件名開始并且指定一個相對于當前路徑的路徑。例如絕對路徑: QDir(/home/administrator/soft); QDir(D:/software); 我們可以使用isRelativ
11、e()或isAbsolute()函數(shù)確認QDir是用的相對路徑還是絕對路徑。使用makeAbsolute()來轉(zhuǎn)換相對路徑的QDir轉(zhuǎn)換成絕對路徑的QDir.c-sharpview plaincopy1. #include2. #include3. #include4. #include5. #include6. #include7. intmain(intargc,char*argv)8. 9. QCoreApplicationa(argc,argv);10. QTextCodec*codec=QTextCodec:codecForName(GB2312);11. QTextCodec:se
12、tCodecForLocale(codec);12. QTextCodec:setCodecForCStrings(codec);13. QTextCodec:setCodecForTr(codec);14. 15. QDird(D:/);16. d.setFilter(QDir:Files|QDir:Hidden|QDir:NoSymLinks|QDir:AllDirs);/列出文件,列出隱藏文件(在Unix下就是以.開始的為文件),不列出符號鏈接(不支持符號連接的操作系統(tǒng)會忽略)17. d.setSorting(QDir:Size|QDir:Reversed);/按文件大小排序,相反的排序
13、順序18. constQFileInfoListlist=d.entryInfoList();/返回這個目錄中所有目錄和文件的QFileInfo對象的列表19. QFileInfoList:const_iteratoriterator=list.begin();20. qDebug()目錄和文件的數(shù)量:d.count();/返回找到的目錄和文件的數(shù)量21. qDebug()fileName/t/t/tsize/t/t/t;22. while(iterator!=list.end()23. qDebug()(*iterator).fileName()/t/t/t(*iterator).size(
14、);24. iterator+;25. 26. qDebug()當前目錄:d.current();/返回應(yīng)用程序當前目錄。27. qDebug()當前目錄的絕對路徑d.currentPath();/返回應(yīng)用程序當前目錄的絕對路徑。28. /constQListlist=d.entryList();/返回這個目錄中所有目錄和文件的名稱的列表29. /QList:const_iteratoriterator=list.begin();30. /while(iterator!=list.end()31. /qDebug()(*iterator);32. /iterator+;33. /34. 35.
15、 returna.exec();36. 運行結(jié)果:4、QFileInfoQFileInfo類提供了一個與平臺無關(guān)的文件信息.QFileInfo提供了關(guān)于系統(tǒng)中的文件名稱和位置,訪問權(quán)限和是否是符號鏈接,文件大小和上次修改/讀寫時間等,也能被用于Qt資源文件。QFileInfo能通過相對/絕對路徑指向一個文件。 可以使用isFile(),isDir(),isSymLink().symLinkTarget()函數(shù)提供符號鏈接的目標文件。在Unix(包括Mac OSX)的符號鏈接具有與目標文件相同的大小(),因為Unix透明地處理符號鏈接;同樣,打開一個符號連接使用的QFile有效地打開鏈接的目標.
16、在Windows中,符號鏈接(快捷方式)的lnk文件。它大?。ǎ┑氖?,符號鏈接(而不是鏈接的目標)的大小,打開一個符號連接使用的QFile并打開。lnk文件。例如cppview plaincopy1. #include2. #include3. #include4. 5. intmain(intargc,char*argv)6. 7. QCoreApplicationa(argc,argv);8. QFileInfoinfo1(E:/meego/vi_command.lnk);9. qDebug()info1.isSymLink();10. qDebug()info1.absoluteFile
17、Path();11. qDebug()info1.size();12. qDebug()info1.symLinkTarget();13. qDebug()*;14. QFileInfoinfo2(info1.symLinkTarget();15. qDebug()info2.isSymLink();16. qDebug()info2.absoluteFilePath();17. qDebug()info2.size();18. 19. returna.exec();20. 運行結(jié)果:cppview plaincopy1. #include2. #include3. #include4. #include5. 6. intmain(intargc,char*argv)7. 8. QCoreApplicationa(argc,argv);9. 10. QTextCodec*codec=QTextCodec:codecForName(GB2312);11. QTextCodec:setCodecForLocale(codec);12. QTextCodec:setCodecForCStrings(codec);13. QTextCodec:setCodecForTr(codec);14. 15. Q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度行政合同行政主體特權(quán)在緊急情況下的適用合同4篇
- 2025版小學操場運動設(shè)施更新與維修合同3篇
- 體育會展客戶關(guān)系管理考核試卷
- 光纖通信在智能電網(wǎng)故障診斷中的應(yīng)用考核試卷
- 2025年土地轉(zhuǎn)讓合同
- 2025版停車場消防設(shè)施建設(shè)與維護服務(wù)合同3篇
- 2025版木工材料研發(fā)與勞務(wù)合作合同范本3篇
- 2025年寫作創(chuàng)作分期付款合同
- 2025年加盟代理合約協(xié)議
- 2025年家庭矛盾仲裁協(xié)議
- 油氣行業(yè)人才需求預(yù)測-洞察分析
- 《數(shù)據(jù)采集技術(shù)》課件-Scrapy 框架的基本操作
- 2025年河北省單招語文模擬測試二(原卷版)
- 高一化學《活潑的金屬單質(zhì)-鈉》分層練習含答案解析
- DB34∕T 4010-2021 水利工程外觀質(zhì)量評定規(guī)程
- 理論力學智慧樹知到期末考試答案章節(jié)答案2024年中國石油大學(華東)
- 2024老年人靜脈血栓栓塞癥防治中國專家共識(完整版)
- 四年級上冊脫式計算100題及答案
- 上海市12校2023-2024學年高考生物一模試卷含解析
- 儲能電站火災(zāi)應(yīng)急預(yù)案演練
- 人教版(新插圖)二年級下冊數(shù)學 第4課時用“進一法”和“去尾法”解決簡單的實際問題 教學課件
評論
0/150
提交評論