2、Qt5增加了QFileDevice类。途中所涉及的类及其用途简要说明如下:
· QFlie:访问本地文件或者嵌入资源;
· QTemporaryFile:创建和访问本地文件系统的临时文件;
· QBuffer:读写QByteArray;
· QProcess:运行外部程序,处理进程间通讯;
· QTcpSocket:TCP协议网络数据传输;
· QUdpSocket:传输 UDP 报文;
· QSslSocket:使用 SSL/TLS 传输数据;
· QFileDevice:新增加的类,提供了有关文件 *** 作的通用实现。
3、这其中,QProcess、QTcpSocket、QUdpSoctet和QSslSocket是顺序访问设备。所谓“顺序访问”,是指它们的数据只能访问一遍:从头走到尾,从第一个字节开始访问,直到最后一个字节,中途不能返回去读取上一个字节;QFile、QTemporaryFile和QBuffer是随机访问设备,可以访问任意位置任意次数,还可以使用QIODevice::seek()函数来重新定位文件访问位置指针。
4、QFile主要提供了有关文件的各种 *** 作,比如打开文件、关闭文件、刷新文件等。我们可以使用QDataStream或QTextStream类来读写文件,也可以使用QIODevice提供的read()、readLine()、readAll()以及write()这样的函数。值得注意的是,有关文件本身的信息,比如文件名、文件所在目录的名字等,则是通过QFileInfo获取,而不是自己分析文件路径字符串。
5、举个例子,打开文件时,需要参数指定打开文件的模式:
ConstantValue Description
QIODevice::NotOpen 0x0000 The device is not open.
QIODevice::ReadOnly 0x0001 The device is open for reading.
QIODevice::WriteOnly0x0002 The device is open for writing.
QIODevice::ReadWriteReadOnly | WriteOnlyThe device is open for reading and writing.
QIODevice::Append 0x0004 The device is opened in append mode, so that all data is written to the end of the file.
QIODevice::Truncate 0x0008 If possible, the device is truncated before it is opened. All earlier contents of the device are lost.
QIODevice::Text 0x0010 When reading, the end-of-line terminators are translated to '\n'. When writing, the end-of-line terminators are translated to the local encoding, for example '\r\n' for Win32.QIODevice::Unbuffered 0x0020 Any buffer in the device is bypassed.
#include <qfile.h>#include <qtextstream.h>1. 打开文件QFile f( fn )//fn可以是一 个相对路径或绝对路径f.open(IO_)//一般不要IO_ReadWrite,很容易出现赃数据//如果要在文件的后面添加内 容要IO_WriteOnly|IO_Append//如果要清空原来的内容,只要IO_WriteOnly//IO_Translate用来读windows文 件,linux下的回车换行是/n,windows下是/r/n2. 写文件QTextStream s( &f )s<<"Hello,world!!!"<<"/n"3. 读一行文件readLine(),每读一 行自动下移一行atEnd()判断是否到文件末尾4. 关闭文件f.close()5. 对文件的读 *** 作:QString fileName = QFileDialog::getOpenFileName( QString::null, QString::null, this)QFile f (fileName)f.open(IO_ReadOnly)QTextStream t(&f)MultiLineEdit1->setText( t.read() )f.close()MultiLineEdit1->setAutoUpdate( TRUE )MultiLineEdit1->repaint ()setCaption( fileName )6. 对文件的写 *** 作:QString fileName = QFileDialog::getSaveFileName( QString::null, QString::null, this )QFile f( fileName )f.open (IO_WriteOnly )QTextStream t(&f)t <<MultiLineEdit1->text()f.close()欢迎分享,转载请注明来源:内存溢出
评论列表(0条)