?? qfile.html
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- /home/reggie/tmp/qt-3.0-reggie-5401/qt-x11-commercial-3.0.5/src/tools/qfile.cpp:45 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Translator" content="Cavendish">
<meta name="Qt zh_CN Documents Website" content="http://www.qiliang.net/qt">
<title>QFile類</title>
<style type="text/css"><!--
h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
body { background: #ffffff; color: black; font-family: "Times New Roman" }
--></style>
</head>
<body>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr bgcolor="#E5E5E5">
<td valign=center>
<a href="index.html">
<font color="#004faf">主頁</font></a>
| <a href="classes.html">
<font color="#004faf">所有的類</font></a>
| <a href="mainclasses.html">
<font color="#004faf">主要的類</font></a>
| <a href="annotated.html">
<font color="#004faf">注釋的類</font></a>
| <a href="groups.html">
<font color="#004faf">分組的類</font></a>
| <a href="functions.html">
<font color="#004faf">函數</font></a>
</td>
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table>
<h1 align=center>QFile類參考</h1>
<p>QFile類是一個操作文件的輸入/輸出設備。
<a href="#details">詳情請見……</a>
<p><tt>#include <<a href="qfile-h.html">qfile.h</a>></tt>
<p>繼承了 <a href="qiodevice.html">QIODevice</a>。
<p><a href="qfile-members.html">所有成員函數的列表。</a>
<h2>公有成員</h2>
<ul>
<li><div class=fn><a href="#QFile"><b>QFile</b></a> ()</div></li>
<li><div class=fn><a href="#QFile-2"><b>QFile</b></a> ( const QString & name )</div></li>
<li><div class=fn><a href="#~QFile"><b>~QFile</b></a> ()</div></li>
<li><div class=fn>QString <a href="#name"><b>name</b></a> () const</div></li>
<li><div class=fn>void <a href="#setName"><b>setName</b></a> ( const QString & name )</div></li>
<li><div class=fn>typedef QCString (* <a href="#EncoderFn"><b>EncoderFn</b></a> ) ( const QString & fileName )</div></li>
<li><div class=fn>typedef QString (* <a href="#DecoderFn"><b>DecoderFn</b></a> ) ( const QCString & localfileName )</div></li>
<li><div class=fn>bool <a href="#exists-2"><b>exists</b></a> () const</div></li>
<li><div class=fn>bool <a href="#remove"><b>remove</b></a> ()</div></li>
<li><div class=fn>virtual bool <a href="#open"><b>open</b></a> ( int m )</div></li>
<li><div class=fn>bool <a href="#open-2"><b>open</b></a> ( int m, FILE * f )</div></li>
<li><div class=fn>bool <a href="#open-3"><b>open</b></a> ( int m, int f )</div></li>
<li><div class=fn>virtual void <a href="#close"><b>close</b></a> ()</div></li>
<li><div class=fn>virtual void <a href="#flush"><b>flush</b></a> ()</div></li>
<li><div class=fn>virtual Offset <a href="#size"><b>size</b></a> () const</div></li>
<li><div class=fn>virtual Offset <a href="#at-2"><b>at</b></a> () const</div></li>
<li><div class=fn>virtual bool <a href="#at"><b>at</b></a> ( Offset pos )</div></li>
<li><div class=fn>virtual bool <a href="#atEnd"><b>atEnd</b></a> () const</div></li>
<li><div class=fn>virtual Q_LONG <a href="#readBlock"><b>readBlock</b></a> ( char * p, Q_ULONG len )</div></li>
<li><div class=fn>virtual Q_LONG <a href="#readLine"><b>readLine</b></a> ( char * p, Q_ULONG maxlen )</div></li>
<li><div class=fn>Q_LONG <a href="#readLine-2"><b>readLine</b></a> ( QString & s, Q_ULONG maxlen )</div></li>
<li><div class=fn>virtual int <a href="#getch"><b>getch</b></a> ()</div></li>
<li><div class=fn>virtual int <a href="#putch"><b>putch</b></a> ( int ch )</div></li>
<li><div class=fn>virtual int <a href="#ungetch"><b>ungetch</b></a> ( int ch )</div></li>
<li><div class=fn>int <a href="#handle"><b>handle</b></a> () const</div></li>
</ul>
<h2>靜態公有成員</h2>
<ul>
<li><div class=fn>QCString <a href="#encodeName"><b>encodeName</b></a> ( const QString & fileName )</div></li>
<li><div class=fn>QString <a href="#decodeName"><b>decodeName</b></a> ( const QCString & localFileName )</div></li>
<li><div class=fn>void <a href="#setEncodingFunction"><b>setEncodingFunction</b></a> ( EncoderFn f )</div></li>
<li><div class=fn>void <a href="#setDecodingFunction"><b>setDecodingFunction</b></a> ( DecoderFn f )</div></li>
<li><div class=fn>bool <a href="#exists"><b>exists</b></a> ( const QString & fileName )</div></li>
<li><div class=fn>bool <a href="#remove-2"><b>remove</b></a> ( const QString & fileName )</div></li>
</ul>
<h2>重要的繼承成員</h2>
<ul>
<li><div class=fn>virtual QByteArray <a href="#readAll"><b>readAll</b></a> ()</div></li>
</ul>
<hr><a name="details"></a><h2>詳細描述</h2>
QFile類是一個操作文件的輸入/輸出設備。
<p>
<p> QFile是用來讀寫二進制文件和文本文件的輸入/輸出設備。QFile可以自己單獨被使用,但是如果和<a href="qdatastream.html">QDataStream</a>或<a href="qtextstream.html">QTextStream</a>一起使用將更加方便。
<p> 文件名通常可以通過構造函數來傳遞,但也可以使用<a href="#setName">setName</a>()來設置。你可以通過<a href="#exists">exists</a>()來檢查一個文件是否存在并且可以通過<a href="#remove">remove</a>()來移去一個文件。
<p> 文件可以用<a href="#open">open</a>()來打開、用<a href="#close">close</a>()來關閉、用<a href="#flush">flush</a>()來刷新。數據通常可以使用QDataStream或者QTextStream進行讀寫,但你也可以使用<a href="#readBlock">readBlock</a>()和<a href="#readLine">readLine</a>()來讀,使用<a href="qiodevice.html#writeBlock">writeBlock</a>()來寫。QFile也支持<a href="#getch">getch</a>()、 <a href="#ungetch">ungetch</a>()和<a href="#putch">putch</a>()。
<p> <a href="#size">size</a>()可以返回文件的大小。你可以通過使用<a href="#at">at</a>()函數得到當前文件位置或者移到一個新的文件位置。如果你到了文件的末尾,<a href="#atEnd">atEnd</a>()返回真。<a href="#handle">handle</a>()返回文件句柄。
<p> 這里是一個使用<a href="qtextstream.html">QTextStream</a>來一行一行地讀取一個文本文件的代碼段。它會把每一行帶上一個行號打印出來。
<pre>
<a href="qstringlist.html">QStringList</a> lines;
QFile file( "file.txt" );
if ( file.<a href="#open">open</a>( IO_ReadOnly ) ) {
<a href="qtextstream.html">QTextStream</a> stream( &file );
<a href="qstring.html">QString</a> line;
int n = 1;
while ( !stream.<a href="qtextstream.html#eof">eof</a>() ) {
line = stream.<a href="qtextstream.html#readLine">readLine</a>(); // 不包括“\n”的一行文本
printf( "%3d: %s\n", n++, line.<a href="qstring.html#latin1">latin1</a>() );
lines += line;
}
file.<a href="#close">close</a>();
}
</pre>
<p> 寫文本也很容易(假設我們有一個行的字符串列表要寫):
<pre>
QFile file( "file.txt" );
if ( file.<a href="#open">open</a>( IO_WriteOnly ) ) {
<a href="qtextstream.html">QTextStream</a> stream( &file );
for ( QStringList::Iterator it = lines.begin(); it != lines.end(); ++it )
stream << *it << "\n";
file.<a href="#close">close</a>();
}
</pre>
<p> <a href="qfileinfo.html">QFileInfo</a>類控制文件的詳細信息,比如訪問權限、文件日期和文件類型。
<p> <a href="qdir.html">QDir</a>類管理目錄和文件名列表。
<p> Qt使用Unicode文件名。如果你想在Unix系統上使用你自己的輸入/輸出,你可以使用<a href="#encodeName">encodeName</a>()(和<a href="#decodeName">decodeName</a>())來把文件名轉換為本地編碼。
<p>
<p> <p>也可以參考<a href="qdatastream.html">QDataStream</a>、<a href="qtextstream.html">QTextStream</a>和<a href="io.html">輸入/輸出和網絡</a>。
<hr><h2>成員類型文檔</h2>
<h3 class=fn><a name="DecoderFn"></a>QFile::DecoderFn</h3>
<p> 被<a href="#setDecodingFunction">QFile::setDecodingFunction</a>()使用。
<h3 class=fn><a name="EncoderFn"></a>QFile::EncoderFn</h3>
<p> 被<a href="#setEncodingFunction">QFile::setEncodingFunction</a>()使用。
<hr><h2>成員函數文檔</h2>
<h3 class=fn><a name="QFile"></a>QFile::QFile ()
</h3>
構造一個沒有名稱的QFile。
<h3 class=fn><a name="QFile-2"></a>QFile::QFile ( const <a href="qstring.html">QString</a> & name )
</h3>
構造一個文件名為<em>name</em>的QFile。
<p>也可以參考<a href="#setName">setName</a>()。
<h3 class=fn><a name="~QFile"></a>QFile::~QFile ()
</h3>
析構QFile。調用<a href="#close">close</a>()。
<h3 class=fn>bool <a name="at"></a>QFile::at ( <a href="qiodevice.html#Offset">Offset</a> pos )<tt> [虛]</tt>
</h3>
設置文件索引到<em>pos</em>。如果成功,返回真,否則返回假。
<p> 實例:
<pre>
QFile f( "data.bin" );
f.<a href="#open">open</a>( <a href="qfile.html#open">IO_ReadOnly</a> ); // 索引設置為0
f.<a href="#at">at</a>( 100 ); // 設置索引為100
f.<a href="#at">at</a>( f.<a href="#at">at</a>()+50 ); // 設置索引為150
f.<a href="#at">at</a>( f.<a href="#size">size</a>()-80 ); // 設置索引為EOF之前的80
f.<a href="#close">close</a>();
</pre>
<p> 不帶參數使用<a href="#at">at</a>()可以重新得到文件的位移。
<p> <b>警告:</b>如果文件是使用<a href="qfile.html#open">IO_Append</a>方式打開(<a href="#open">open</a>())的話,結果是未定義的。
<p> <p>也可以參考<a href="#size">size</a>()和<a href="#open">open</a>()。
<p>從<a href="qiodevice.html#at-2">QIODevice</a>中重新實現的。
<h3 class=fn><a href="qiodevice.html#Offset">Offset</a> <a name="at-2"></a>QFile::at () const<tt> [虛]</tt>
</h3>
這是一個重載成員函數,提供了方便。它的行為基本上和上面的函數相同。
<p> 返回文件中的位置。
<p>也可以參考<a href="#size">size</a>()。
<p>從<a href="qiodevice.html#at">QIODevice</a>中重新實現的。
<h3 class=fn>bool <a name="atEnd"></a>QFile::atEnd () const<tt> [虛]</tt>
</h3>
如果到達文件的末尾,返回真,否則返回假。
<p>也可以參考<a href="#size">size</a>()。
<p>從<a href="qiodevice.html#atEnd">QIODevice</a>中重新實現的。
<h3 class=fn>void <a name="close"></a>QFile::close ()<tt> [虛]</tt>
</h3>
關閉一個打開的文件。
<p> 如果一個文件是使用一個存在的文件句柄打開的,那么它不是關閉的。如果這個存在的文件句柄是一個<tt>FILE*</tt>,這個文件被刷新。如果這個存在的文件句柄是一個<tt>int</tt>文件描述符,那么對這個文件將沒有操作。
<p> 一些“在后面寫的”文件系統也許會在關閉文件時報告一個未詳細說明的錯誤。這些錯誤只表明在上一次打開(<a href="#open">open</a>())之后也許發生了一些錯誤。在這種情況下,<a href="qiodevice.html#status">status</a>()會在關閉之后(<a href="#close">close</a>())報告<a href="qiodevice.html#status">IO_UnspecifiedError</a>,否則是<a href="qiodevice.html#status">IO_Ok</a>。
<p> <p>也可以參考<a href="#open">open</a>()和<a href="#flush">flush</a>()。
<p>實例:<a href="simple-application-example.html#x1510">application/application.cpp</a>、<a href="tutorial2-07.html#x2495">chart/chartform_files.cpp</a>、<a href="helpviewer-example.html#x988">helpviewer/helpwindow.cpp</a>、<a href="mdi-example.html#x2005">mdi/application.cpp</a>、<a href="qdir-example.html#x1807">qdir/qdir.cpp</a>、<a href="qwerty-example.html#x360">qwerty/qwerty.cpp</a>和<a href="outliner-example.html#x1903">xml/outliner/outlinetree.cpp</a>。
<p>從<a href="qiodevice.html#close">QIODevice</a>中重新實現的。
<h3 class=fn><a href="qstring.html">QString</a> <a name="decodeName"></a>QFile::decodeName ( const <a href="qcstring.html">QCString</a> & localFileName )<tt> [靜態]</tt>
</h3>
這個將會使用<em>localFileName</em>做與<a href="#encodeName">QFile::encodeName</a>()相反的操作。
<p> <p>也可以參考<a href="#setDecodingFunction">setDecodingFunction</a>()。
<h3 class=fn><a href="qcstring.html">QCString</a> <a name="encodeName"></a>QFile::encodeName ( const <a href="qstring.html">QString</a> & fileName )<tt> [靜態]</tt>
</h3>
當你使用QFile時,在Qt中<a href="qfileinfo.html">QFileInfo</a>和<a href="qdir.html">QDir</a>訪問文件系統,你可以使用Unicode文件名。在Unix上,這些文件名被轉換為8位的編碼。如果你想在Unix上使用你自己的文件輸入/輸出,你應該使用這個函數來轉換文件名。在Windows NT上,Unicode文件名在文件系統中是直接被支持的并且這個函數應該避免使用。在Windows 95上,在這時候非Latin1的場所設置是不被支持的。
<p> 默認情況下,這個函數把<em>fileName</em>轉換為本地的8位編碼,這取決于用戶的場所設置。對于用戶選擇的文件名這足夠了。應用程序中的文件名硬編碼只是需要使用7位ASCII文件名字符。
<p> 這種轉換方案可以使用<a href="#setEncodingFunction">setEncodingFunction</a>()來改變。如果你需要給用戶一個存儲文件名為utf-8等等情況下,這也許很有用,但是這些文件名可能在這之后對其它應用程序來說是不可識別的。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -