Qt中关于文件的操作

Qt提供了多个类对文件进行不同的操作。

目录

1.QFileDialog类

2.QFile类

3. QTextStream类

4. QDataStream类

5. QTemporaryFile类

6. QBuffer类

7. QFileSystemWatcher类

8. QFileInfo类

========================================================================

1.QFileDialog类

常用的有如下函数:

QFileDialog::getOpenFileName()    //获取指定文件路径名返回QString
QFileDialog::getExistingDirectory()  //获取指定路径返回QString
QFileDialog::getSaveFileName()    //获取指定保存路径名返回QString

2.QFile类

分为文本文件和数据文件的操作,主要的函数有

qint64 read( char * data, qint64 maxSize) //数据流读取
QByteArray read( qint64 maxSize) //文本流方式读取
QByteArray readAll() //文本流方式读取
QByteArray readLine()//文本流方式读取
qint64 write(const char * data, qint64 maxSize)
qint64 write(const QByteArray & byteArray)

示例:

// 1.read读数据
	Qfile file(文件名);
	if(file.open(QIODevice::ReadOnly))
	{
		QByteArray ba = file.readAll();//读出全部数据
	}
	else
	{
		cout << "打开文件失败" ;
	}
	file.close();
// 2.write写数据到文件中
	QByteArray ba;
	QFile file(文件名);
	if(file.open(QIODevice::WriteOnly))
	{
		file.write(ba);
	}
	else
	{
		cout << "打开文件失败";
	}
		file.close();

3. QTextStream类

QTextStream可将写入的数据全部转化为可读文本
    向文件中写入文本信息:

    QFile f("F:/Test.txt");
    f.open(QIODevice::ReadWrite|QIODevice::Append|QIODevice::Text);
    QTextStream out(&f);
    out << QString("log11111") << endl;
    f.close();

4. QDataStream类

QDataStream可将写入的数据根据类型转换为二进制数据;

QDataStream data;
int a;
QString str;
data >> a >> b;//将数据存在流中
data << a << b;//从流中取出数据

5. QTemporaryFile类

QTemporaryFile是临时文件操作,创建全局唯一的临时文件,常用于大数据传递或者进程间通信场合。

6. QBuffer类

QBuffer为类QByteArray提供QIODevice接口;QBuffer缓冲区写入和读取的数据必须是同一种数据类型,不能混合多种数据类型;

QBuffer的使用场合:
    线程间不同类型的数据传递;
    缓存外部设备中的数据返回;
    数据读取速度小于写入速度;

7. QFileSystemWatcher类

预定义了用于监控文件和目录变化的类QFileSystemWatcher,功能:
    监控特定目录和文件的状态;
    同时对多个文件和目录进行监控;
    当目录或文件发生改变时触发信号;
    通过信号与槽的机制捕捉信号并作出响应;

8. QFileInfo类

用于获取文件的信息。使用示例:

	QFile file(文件名);
    QFileInfo fileInfo(file);
    QString strFilePath = fileInfo.absoluteFilePath();//完整路径  E:\Test Picture\Test\3.raw
    strFilePath = fileInfo.absolutePath();//完整目录  E:\Test Picture\Test
    strFilePath = fileInfo.baseName();//不带后缀的文件名	3
    strFilePath = fileInfo.bundleName();//在Mac和IOS平台上返回包的路径,其它平台返回空字符串
    strFilePath = fileInfo.canonicalFilePath();//返回一个包含文件名的规范路径?  E:\Test Picture\Test\3.raw
    strFilePath = fileInfo.canonicalPath();//返回不包含文件名的规范路径	 E:\Test Picture\Test
    strFilePath = fileInfo.completeBaseName();//返回文件的名字,只是文件的名字,不包含路径和后缀  3
    strFilePath = fileInfo.completeSuffix();//返回文件的完整后缀,不包含.   raw
    bool bExist = fileInfo.exists();
    strFilePath = fileInfo.fileName();//返回文件的名字,包含后缀    3.raw
    strFilePath = fileInfo.filePath();//返回文件路径以及包含后缀的文件名  E:\Test Picture\Test\3.raw
    iN = fileInfo.size();	//文件的大小
    strFilePath = fileInfo.suffix();//返回文件的最后一个后缀

你可能感兴趣的:(qt,开发语言,p2p)