📄 qfile.html
字号:
<p> <p>也可以参考<a href="#decodeName">decodeName</a>()。
<h3 class=fn>bool <a name="exists"></a>QFile::exists ( const <a href="qstring.html">QString</a> & fileName )<tt> [静态]</tt>
</h3>
如果给定的文件<em>fileName</em>存在,返回真,否则返回假。
<p>实例:<a href="tutorial2-05.html#x2468">chart/chartform.cpp</a>、<a href="dirview-example.html#x1714">dirview/dirview.cpp</a>和<a href="helpviewer-example.html#x989">helpviewer/helpwindow.cpp</a>。
<h3 class=fn>bool <a name="exists-2"></a>QFile::exists () const
</h3>
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
<p> 如果这个文件存在,返回真,否则返回假。
<p>也可以参考<a href="#name">name</a>()。
<h3 class=fn>void <a name="flush"></a>QFile::flush ()<tt> [虚]</tt>
</h3>
刷新文件缓存到磁盘。
<p> <a href="#close">close</a>()也刷新文件缓存。
<p>从<a href="qiodevice.html#flush">QIODevice</a>中重新实现的。
<h3 class=fn>int <a name="getch"></a>QFile::getch ()<tt> [虚]</tt>
</h3>
从文件中读取一个单字节/字符。
<p> 返回所读的字节/字符,如果到达文件的末尾,返回-1。
<p> <p>也可以参考<a href="#putch">putch</a>()和<a href="#ungetch">ungetch</a>()。
<p>从<a href="qiodevice.html#getch">QIODevice</a>中重新实现的。
<h3 class=fn>int <a name="handle"></a>QFile::handle () const
</h3>
返回这个文件的文件句柄。
<p> 如果是一个小的正整数,可以用在像fdopen()和fcntl()这样的C库函数中,也可以用在<a href="qsocketnotifier.html">QSocketNotifier</a>中。
<p> 如果这个文件没有被打开或者存在错误,<a href="#handle">handle</a>()返回-1。
<p> <p>也可以参考<a href="qsocketnotifier.html">QSocketNotifier</a>。
<h3 class=fn><a href="qstring.html">QString</a> <a name="name"></a>QFile::name () const
</h3>
返回由<a href="#setName">setName</a>()设置的名称。
<p>也可以参考<a href="#setName">setName</a>()和<a href="qfileinfo.html#fileName">QFileInfo::fileName</a>()。
<h3 class=fn>bool <a name="open"></a>QFile::open ( int m )<tt> [虚]</tt>
</h3>
使用<em>m</em>模式和当前指定的文件名打开文件。如果成功,返回真,否则返回假。
<p> <!-- index IO_Raw --><!-- index IO_ReadOnly --><!-- index IO_WriteOnly --><!-- index IO_ReadWrite --><!-- index IO_Append --><!-- index IO_Truncate --><!-- index IO_Translate -->
<p> 模式参数<em>m</em>必须是下列标记的组合:
<ul>
<li> <a href="qfile.html#open">IO_Raw</a> 指定直接的(非缓存的)文件访问。
<li> <a href="qfile.html#open">IO_ReadOnly</a> 以只读模式打开文件。
<li> <a href="qfile.html#open">IO_WriteOnly</a> 以只写模式(并且截短)打开文件。
<li> <a href="qfile.html#open">IO_ReadWrite</a> 以读/写模式打开文件,等于<tt>(IO_ReadOnly | IO_WriteOnly)</tt>。
<li> <a href="qfile.html#open">IO_Append</a> 以附加的模式打开文件。当你想向日志文件写些东西时这个模式非常有用。文件索引被设置到文件末尾。注意如果你在附加模式中使用<a href="#at">at</a>()定位文件索引,结果将是为定义的。
<li> <a href="qfile.html#open">IO_Truncate</a> 截短文件。
<li> <a href="qfile.html#open">IO_Translate</a> 在MS-DOS、Windows和OS/2下对文本文件翻译回车和换行。
</ul>
<p> 直接访问模式在输入/输出的块操作使用4千字节或更大的情况下使用最好。当每次读小量数据时,缓存访问工作的更好。
<p> <strong>重要:</strong>当使用缓存的文件工作时,数据没有被立刻写到文件中。调用<a href="#flush">flush</a>()可以确保数据被真正地写完。
<p> <b>警告:</b>如果你有一个缓存文件以同时读写方式打开,你不要在一次输入操作之后立即输出,反之亦然。你必须在输入和输出操作之间调用flush()或者一次文件定位操作,比如seek(),否则缓存中可能会包含无用信息。
<p> 如果文件不存在并且指定<a href="qfile.html#open">IO_WriteOnly</a>或<a href="qfile.html#open">IO_ReadWrite</a>时,文件被创建。
<p> 实例:
<pre>
QFile f1( "/tmp/data.bin" );
QFile f2( "readme.txt" );
f1.<a href="#open">open</a>( IO_Raw | IO_ReadWrite | IO_Append );
f2.<a href="#open">open</a>( IO_ReadOnly | IO_Translate );
</pre>
<p> <p>也可以参考<a href="#name">name</a>()、 <a href="#close">close</a>()、<a href="qiodevice.html#isOpen">isOpen</a>()和<a href="#flush">flush</a>()。
<p>实例:<a href="qaction-application-example.html#x1067">action/application.cpp</a>、<a href="simple-application-example.html#x1511">application/application.cpp</a>、<a href="tutorial2-07.html#x2496">chart/chartform_files.cpp</a>、<a href="helpviewer-example.html#x990">helpviewer/helpwindow.cpp</a>、<a href="qdir-example.html#x1808">qdir/qdir.cpp</a>、<a href="qwerty-example.html#x361">qwerty/qwerty.cpp</a>和<a href="outliner-example.html#x1904">xml/outliner/outlinetree.cpp</a>。
<p>从<a href="qiodevice.html#open">QIODevice</a>中重新实现的。
<h3 class=fn>bool <a name="open-2"></a>QFile::open ( int m, FILE * f )
</h3>
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
<p> 使用<em>m</em>模式和一个存在的文件句柄<em>f</em>打开文件。如果成功,返回真,否则返回假。
<p> 实例:
<pre>
#include <stdio.h>
void printError( const char* msg )
{
QFile f;
f.<a href="#open">open</a>( <a href="qfile.html#open">IO_WriteOnly</a>, stderr );
f.<a href="qiodevice.html#writeBlock">writeBlock</a>( msg, qstrlen(msg) ); // 写到标准错误输出(stderr)
f.<a href="#close">close</a>();
}
</pre>
<p> 当使用这个函数打开一个QFile时,<a href="#close">close</a>()并不真正关闭这个文件,只是刷新它。
<p> <b>警告:</b>如果<em>f</em>是<tt>标准输入(stdin)</tt>、<tt>标准输出(stdout)</tt>、<tt>标准错误输出(stderr)</tt>,你也许不能搜索。更详细的信息请看<a href="qiodevice.html#isSequentialAccess">QIODevice::isSequentialAccess</a>()。
<p> <p>也可以参考<a href="#close">close</a>()。
<h3 class=fn>bool <a name="open-3"></a>QFile::open ( int m, int f )
</h3>
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
<p> 使用<em>m</em>模式和一个存在的文件描述符<em>f</em>打开文件。如果成功,返回真,否则返回假。
<p> 当使用这个函数打开一个QFile时,<a href="#close">close</a>()并不真正关闭这个文件。
<p> 使用这个函数打开一个QFile时,它被自动设置为直接模式,这就意味着文件输入/输出函数是慢的。如果你需要更好的执行效率,请你试着使用其它打开函数。
<p> <b>警告:</b>如果<em>f</em>是0(stdin)、1(stdout)或2(stderr)其中之一时,你也许不能搜索。<a href="#size">size</a>()被设置为<tt>INT_MAX</tt>(在limits.h文件中)。
<p> <p>也可以参考<a href="#close">close</a>()。
<h3 class=fn>int <a name="putch"></a>QFile::putch ( int ch )<tt> [虚]</tt>
</h3>
写字符<em>ch</em>到文件。
<p> 返回<em>ch</em>,或者如果发生错误,返回-1。
<p> <p>也可以参考<a href="#getch">getch</a>()和<a href="#ungetch">ungetch</a>()。
<p>从<a href="qiodevice.html#putch">QIODevice</a>中重新实现的。
<h3 class=fn><a href="qbytearray.html">QByteArray</a> <a name="readAll"></a>QIODevice::readAll ()<tt> [虚]</tt>
</h3>
这个方便的函数返回这个设备中的所有剩余数据。
<h3 class=fn>Q_LONG <a name="readBlock"></a>QFile::readBlock ( char * p, Q_ULONG len )<tt> [虚]</tt>
</h3>
从这个文件中读取最多<em>maxlen</em>字节到<em>p</em>并且返回实际读取的字节数量。
<p> 如果发生严重错误,返回-1。
<p><b>警告:</b>当一个缓存文件为了读写而打开时,我们已经在使用一些C库时遇到了问题。如果在一个写操作后立即执行一个读操作,读缓存中就会包含无用信息。更可怕的是,一些无用信息被写到文件中。在<a href="#readBlock">readBlock</a>()之前调用<a href="#flush">flush</a>()就可以解决这个问题。
<p> <p>也可以参考<a href="qiodevice.html#writeBlock">writeBlock</a>()。
<p>实例:<a href="qwerty-example.html#x362">qwerty/qwerty.cpp</a>。
<p>从<a href="qiodevice.html#readBlock">QIODevice</a>中重新实现的。
<h3 class=fn>Q_LONG <a name="readLine"></a>QFile::readLine ( char * p, Q_ULONG maxlen )<tt> [虚]</tt>
</h3>
读一行文本。
<p> 从这个文本中读取最多<em>maxlen</em>字节或者行结束符到<em>p</em>,哪个先发生以哪个为准。返回实际读取的字节数量,或者如果发生错误,返回-1。换行将不会被省略。
<p> 这个函数只对缓存文件有效。避免在以<a href="qfile.html#open">IO_Raw</a>标记方式打开的文件中使用<a href="#readLine">readLine</a>()。
<p> <p>也可以参考<a href="#readBlock">readBlock</a>()和<a href="qtextstream.html#readLine">QTextStream::readLine</a>()。
<p>从<a href="qiodevice.html#readLine">QIODevice</a>中重新实现的。
<h3 class=fn>Q_LONG <a name="readLine-2"></a>QFile::readLine ( <a href="qstring.html">QString</a> & s, Q_ULONG maxlen )
</h3>
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
<p> 读一行文本。
<p> 从这个文本中读取最多<em>maxlen</em>字节或者行结束符到字符串<em>s</em>,哪个先发生以哪个为准。返回实际读取的字节数量,或者如果发生错误,返回-1。换行将不会被省略。
<p> 这个函数只对缓存文件有效。避免在以<a href="qfile.html#open">IO_Raw</a>标记方式打开的文件中使用<a href="#readLine">readLine</a>()。
<p> 注意这个字符串只能作为无格式的Latin1字节来读,不是Unicode。
<p> <p>也可以参考<a href="#readBlock">readBlock</a>()和<a href="qtextstream.html#readLine">QTextStream::readLine</a>()。
<h3 class=fn>bool <a name="remove"></a>QFile::remove ()
</h3>
移去当前指定文件名的文件。如果成功,返回真,否则返回假。
<p> 在文件被移去之前,它被关闭。
<h3 class=fn>bool <a name="remove-2"></a>QFile::remove ( const <a href="qstring.html">QString</a> & fileName )<tt> [静态]</tt>
</h3>
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
<p> 移去文件<em>fileName</em>。如果成功,返回真,否则返回假。
<h3 class=fn>void <a name="setDecodingFunction"></a>QFile::setDecodingFunction ( <a href="qfile.html#DecoderFn">DecoderFn</a> f )<tt> [静态]</tt>
</h3>
设置8位文件名的译码函数位<em>f</em>。默认使用本地指定的8位编码。
<p> <p>也可以参考<a href="#encodeName">encodeName</a>()和<a href="#decodeName">decodeName</a>()。
<h3 class=fn>void <a name="setEncodingFunction"></a>QFile::setEncodingFunction ( <a href="qfile.html#EncoderFn">EncoderFn</a> f )<tt> [静态]</tt>
</h3>
设置Unicode文件名的编码函数为<em>f</em>。默认使用本地指定的8位编码。
<p> <p>也可以参考<a href="#encodeName">encodeName</a>()。
<h3 class=fn>void <a name="setName"></a>QFile::setName ( const <a href="qstring.html">QString</a> & name )
</h3>
设置文件的名称为<em>name</em>。这个名称可以不包含路径,也可以包含相对路径或者绝对路径。
<p> 如果文件已经被打开,不要调用这个函数。
<p> 如果文件名没有路径或者使用相对路径,这是使用的路径就是应用程序在<em>调用<a href="#open">open</a>()的时候</em>的当前路径。
<p> 实例:
<pre>
QFile f;
QDir::<a href="qdir.html#setCurrent">setCurrent</a>( "/tmp" );
f.<a href="#setName">setName</a>( "readme.txt" );
QDir::<a href="qdir.html#setCurrent">setCurrent</a>( "/home" );
f.<a href="#open">open</a>( <a href="qfile.html#open">IO_ReadOnly</a> ); // 在Unix下打开“/home/readme.txt”
</pre>
<p> 注意Qt支持在所有的操作系统中使用目录分隔符“/”。
<p> <p>也可以参卡<a href="#name">name</a>()、<a href="qfileinfo.html">QFileInfo</a>和<a href="qdir.html">QDir</a>。
<h3 class=fn><a href="qiodevice.html#Offset">Offset</a> <a name="size"></a>QFile::size () const<tt> [虚]</tt>
</h3>
返回文件大小。
<p>也可以参考<a href="#at">at</a>()。
<p>实例:<a href="statistics-example.html#x2628">table/statistics/statistics.cpp</a>。
<p>从<a href="qiodevice.html#size">QIODevice</a>中重新实现的。
<h3 class=fn>int <a name="ungetch"></a>QFile::ungetch ( int ch )<tt> [虚]</tt>
</h3>
<p> 把字符<em>ch</em>放回到这个文件中并且如果索引位置不是零的话,减一。
<p> 这个函数正常地被调用就是“撤销”<a href="#getch">getch</a>()操作。
<p> 返回<em>ch</em>,否则,如果发生错误,返回-1。
<p> <p>也可以参考<a href="#getch">getch</a>()和<a href="#putch">putch</a>()。
<p>从<a href="qiodevice.html#ungetch">QIODevice</a>中重新实现的。
<!-- eof -->
<hr><p>
这个文件是<a href="index.html">Qt工具包</a>一部分。
版权所有 © 1995-2002
<a href="http://www.trolltech.com/">Trolltech</a>。保留所有权利。
<p><address><hr><div align=center>
<table width=100% cellspacing=0 border=0><tr>
<td>Copyright © 2002
<a href="http://www.trolltech.com">Trolltech</a>
<td><a href="http://www.trolltech.com/trademarks.html">Trademarks</a>
<td><a href="zh_CN.html">译者:Cavendish</a>
<td align=right><div align=right>Qt 3.0.5版</div>
</table></div></address></body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -