| 接下來的幾個主題,我們將直接取自Qt的線上文件作些修改,因為Qt的線上文件都已經很清楚的說明了這些類別的作用,我們親自寫也不一定寫得出更詳細的入門內容,故作這樣的呈現方式,如果可以的話,當然由您親自看看線上文件會更清楚,我們也鼓勵您這麼作。 回到正題,以下是取自QFile類別的Qt線上說明,翻譯並作些改寫。 QFile類別是對檔案作操作的I/O裝置。 QFile是用來讀取與寫入二進位檔案及文字檔案的I/O裝置,QFile可以單獨使用,或是使用於QDataStream或QTextStream,這會比單獨使用QFile更加容易。 您可以在QFile物件的建構函式中設定要開啟的檔案名稱,或是使用setName()來指定檔案名稱,然後您可以使用exists()方法來測試檔案是否存在,使用remove()方法來移除一個檔案。 使用open()方法可以開啟檔案,使用close()方法關閉,而使用flush()方法來將資料flush出去,通常我們使用QDataStream 或QTextStream來讀寫檔案,但是您也可以使用readBlock()與readLine()方法來讀取檔案,使用writeBlock()方法 來寫入檔案,QFile也支援getch()、ungetch()與putch()等方法。 我們可以使用size()方法取得檔案的大小,您可以使用at()方法取得檔案目前的位置或是將它移至新的位置,如果您讀取檔案至尾端了,atEnd()方法會傳回TRUE值。 下面的程式碼片段使用了QTextStream來一行一行的讀取一個文字檔案,並將結果加上行號顯示在主控台上: QStringList lines;
QFile file( "file.txt" ); if ( file.open( IO_ReadOnly ) ) { QTextStream stream( &file ); QString line; int i = 1; while ( !stream.atEnd() ) { line = stream.readLine(); // line of text excluding '\n' printf( "%3d: %s\n", i++, line.latin1() ); lines += line; } file.close(); } 寫入文字至檔案也很簡單,下面的例子告訴您如何將方才我們讀入至stringlist的文字寫入另一個檔案: QFile file( "file.txt" ); if ( file.open( IO_WriteOnly ) ) { QTextStream stream( &file ); for ( QStringList::Iterator it = lines.begin(); it != lines.end(); ++it ) stream << *it << "\n"; file.close(); } |
|