![Qfile-類介紹_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/18531c36-e8de-40c4-9967-e4dd33101aa9/18531c36-e8de-40c4-9967-e4dd33101aa91.gif)
![Qfile-類介紹_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/18531c36-e8de-40c4-9967-e4dd33101aa9/18531c36-e8de-40c4-9967-e4dd33101aa92.gif)
![Qfile-類介紹_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/18531c36-e8de-40c4-9967-e4dd33101aa9/18531c36-e8de-40c4-9967-e4dd33101aa93.gif)
![Qfile-類介紹_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/18531c36-e8de-40c4-9967-e4dd33101aa9/18531c36-e8de-40c4-9967-e4dd33101aa94.gif)
![Qfile-類介紹_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/11/18531c36-e8de-40c4-9967-e4dd33101aa9/18531c36-e8de-40c4-9967-e4dd33101aa95.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 今天學(xué)習(xí)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是用來讀寫二進(jìn)制文件和文本文件的輸入/輸出設(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ù)通常可以使用QDataStream或者QTextStream進(jìn)行讀寫,但你也可以使用read(),readLine(),readAll(),write()讀寫。QFil
3、e也支持getChar(),putChar(),和ungetChar()size()可以返回文件的大小。你可以通過使用pos()函數(shù)得到當(dāng)前文件位置或者使用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();/將當(dāng)前讀取文件指針移動到文件末尾25. intcount=0;26. while(count10)27. streamQObject:trUtf8(新建行:)+count/n;28. 29. stream.seek(0);/將當(dāng)前讀取文件指針移動到文件開始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ū)動器標(biāo)識(除了在Unix下)。如果你總是使用“/”作為目錄分隔符,Qt將會把你的路徑轉(zhuǎn)化為符合底層的操作系統(tǒng)的。相對文件名是由一個目錄名稱或者文件名開始并且指定一個相對于當(dāng)前路徑的路徑。例如絕對路徑: QDir(/home/administrator/soft); QDir(D:/software); 我們可以使用isRelativ
11、e()或isAbsolute()函數(shù)確認(rèn)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āng)前目錄:d.current();/返回應(yīng)用程序當(dāng)前目錄。27. qDebug()當(dāng)前目錄的絕對路徑d.currentPath();/返回應(yīng)用程序當(dā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ù)提供符號鏈接的目標(biāo)文件。在Unix(包括Mac OSX)的符號鏈接具有與目標(biāo)文件相同的大?。ǎ?,因為Unix透明地處理符號鏈接;同樣,打開一個符號連接使用的QFile有效地打開鏈接的目標(biāo).
16、在Windows中,符號鏈接(快捷方式)的lnk文件。它大?。ǎ┑氖?,符號鏈接(而不是鏈接的目標(biāo))的大小,打開一個符號連接使用的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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑工程施工合同索賠流程及賠償標(biāo)準(zhǔn)規(guī)范文本
- 2025年度電子工程師研發(fā)項目合作合同
- 2025年度酒店物業(yè)管理合同規(guī)范文本
- 遼寧2024年渤海大學(xué)附屬高級中學(xué)招聘人筆試歷年參考題庫附帶答案詳解
- 菏澤2025年山東菏澤醫(yī)專附屬醫(yī)院招聘精神科住院醫(yī)師2人筆試歷年參考題庫附帶答案詳解
- 湖南2025年湖南省住房和城鄉(xiāng)建設(shè)廳所屬事業(yè)單位選調(diào)筆試歷年參考題庫附帶答案詳解
- 溫州2024年浙江溫州蒼南縣質(zhì)量技術(shù)監(jiān)督檢測院招聘食品檢測工作人員筆試歷年參考題庫附帶答案詳解
- 浙江浙江省國際經(jīng)濟(jì)貿(mào)易學(xué)會招聘筆試歷年參考題庫附帶答案詳解
- 2025年中國宮燈罩市場調(diào)查研究報告
- 2025年中國半自動內(nèi)圓切片機(jī)市場調(diào)查研究報告
- 2025年日歷( 每2個月一張打印版)
- 2024年全國執(zhí)業(yè)獸醫(yī)考試真題及答案解析
- 社區(qū)成人血脂管理中國專家共識(2024年)
- 廣東省2024年普通高中學(xué)業(yè)水平合格性考試語文仿真模擬卷01(解析版)
- 信息科技重大版 七年級上冊 互聯(lián)網(wǎng)應(yīng)用與創(chuàng)新 第1單元 單元教學(xué)設(shè)計 互聯(lián)網(wǎng)時代
- CR200J動力集中動車組拖車制動系統(tǒng)講解
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫參考答案
- 腎性高血壓的護(hù)理
- 國際貨物運輸委托代理合同(中英文對照)全套
- 全面新編部編版四年級下冊語文教材解讀分析
- 《建筑工程質(zhì)量檢驗評定標(biāo)準(zhǔn)》
評論
0/150
提交評論