Qfile-類介紹_第1頁
Qfile-類介紹_第2頁
Qfile-類介紹_第3頁
Qfile-類介紹_第4頁
Qfile-類介紹_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 今天學(xué)習(xí)QT的文件操作1、QIODevice直接繼承自QObjectQIODevice類是輸入/輸出設(shè)備的基類。QIODevice為設(shè)備提供了公共實(shí)現(xiàn)和抽象接口用于讀寫塊數(shù)據(jù)。QIODevice是一個(gè)抽象類,不能被實(shí)例化。被Q3Socket,Q3SocketDevice,QAbstractSocket,QBuffer,QFile,QLocalSocket,QNetworkReply,QProcess繼承.=2、QFile繼承自QIODeviceQFile類是一個(gè)操作文件的輸入/輸出設(shè)備。QFile是用來讀寫二進(jìn)制文件和文本文件的輸入/輸出設(shè)備。QFile可以自己單獨(dú)被使用,但是如果和QDat

2、aStream或QTextStream一起使用將更加方便。文件名通常可以通過構(gòu)造函數(shù)來傳遞,但也可以使用setName()來設(shè)置。目錄分隔符在任何操作系統(tǒng)下都使用“/,“/不被支持。你可以通過exists()來檢查一個(gè)文件是否存在并且可以通過remove()來移去一個(gè)文件。更多操作系統(tǒng)相關(guān)的高級文件系統(tǒng)操作QT提供了QFileInfo和QDir類.文件可以用open()來打開、用close()來關(guān)閉、用flush()來刷新。數(shù)據(jù)通??梢允褂肣DataStream或者QTextStream進(jìn)行讀寫,但你也可以使用read(),readLine(),readAll(),write()讀寫。QFil

3、e也支持getChar(),putChar(),和ungetChar()size()可以返回文件的大小。你可以通過使用pos()函數(shù)得到當(dāng)前文件位置或者使用seek()移到一個(gè)新的文件位置。如果你到了文件的末尾,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 重載了運(yùn)算符了讀數(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)前讀取文件指針移動(dòng)到文件末尾25. intcount=0;26. while(count10)27. streamQObject:trUtf8(新建行:)+count/n;28. 29. stream.seek(0);/將當(dāng)前讀取文件指針移動(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)容的與平臺(tái)無關(guān)的方式。QDir用來操作路徑名稱、關(guān)于路徑和文件的訪問信息和操作底層文件系統(tǒng)。QDir使用相對或絕對文件路徑來指向一個(gè)文件。絕對路徑是從目錄分隔符“/”或者帶有一個(gè)驅(qū)動(dòng)器標(biāo)識(shí)(除了在Unix下)。如果你總是使用“/”作為目錄分隔符,Qt將會(huì)把你的路徑轉(zhuǎn)化為符合底層的操作系統(tǒng)的。相對文件名是由一個(gè)目錄名稱或者文件名開始并且指定一個(gè)相對于當(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)會(huì)忽略)17. d.setSorting(QDir:Size|QDir:Reversed);/按文件大小排序,相反的排序

13、順序18. constQFileInfoListlist=d.entryInfoList();/返回這個(gè)目錄中所有目錄和文件的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();/返回這個(gè)目錄中所有目錄和文件的名稱的列表29. /QList:const_iteratoriterator=list.begin();30. /while(iterator!=list.end()31. /qDebug()(*iterator);32. /iterator+;33. /34. 35.

15、 returna.exec();36. 運(yùn)行結(jié)果:4、QFileInfoQFileInfo類提供了一個(gè)與平臺(tái)無關(guān)的文件信息.QFileInfo提供了關(guān)于系統(tǒng)中的文件名稱和位置,訪問權(quán)限和是否是符號鏈接,文件大小和上次修改/讀寫時(shí)間等,也能被用于Qt資源文件。QFileInfo能通過相對/絕對路徑指向一個(gè)文件。 可以使用isFile(),isDir(),isSymLink().symLinkTarget()函數(shù)提供符號鏈接的目標(biāo)文件。在Unix(包括Mac OSX)的符號鏈接具有與目標(biāo)文件相同的大?。ǎ?,因?yàn)閁nix透明地處理符號鏈接;同樣,打開一個(gè)符號連接使用的QFile有效地打開鏈接的目標(biāo).

16、在Windows中,符號鏈接(快捷方式)的lnk文件。它大?。ǎ┑氖牵栨溄樱ǘ皇擎溄拥哪繕?biāo))的大小,打開一個(gè)符號連接使用的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. 運(yùn)行結(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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論