Qt提供了多个类对文件进行不同的操作。
目录
========================================================================
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();//返回文件的最后一个后缀
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/46199.html