【QT】QT文件处理
2023-09-27 14:25:56 时间
文件处理
Qt6-Qt5代码移植到Qt6 尝试下Qt5的代码是否可以正常在Qt6上编译通过,使用的我网易云代码,这里测试的时候我先添加了5.12的版本进行测试没有问题,下面将切换到6.0的环境试一下。
QFile类用于文件操作,它提供了读写文件的接口,可以读写文件、二进制文件和Qt资源文件。
处理文本文件和二进制文件,可以使用QTextStream类和QDataStream类。处理临时文件可以使用QTemporaryFile,获取信息可以使用QFileInfo,处理目录可以使用QDir,监视文件和目录变化可以使用QFileSystemWatcher。
QFile类示例
#include QCoreApplication #include QFile #include QDebug int main(int argc, char *argv[]) QCoreApplication a(argc, argv); //文件读取 QFile file("hello.txt"); if(file.open(QIODevice::ReadOnly)) char buffer[100]; qint32 n = file.readLine(buffer,sizeof(buffer)); if(n != -1) qDebug() n " " buffer; file.close();//关闭文件 else qDebug() file.errorString(); //文件写入 QFile dataFile; double dPI = 3.1415926; int age =19; dataFile.setFileName("data.txt"); if(dataFile.open(QFile::WriteOnly | QFile::Truncate)) QTextStream out( dataFile); //设置精度 out.setRealNumberPrecision(3); //设置字段宽度 out.setFieldWidth(20); //设置对齐方式 out.setFieldAlignment(QTextStream::AlignCenter); out QString("PI:") dPI; //将整数以二进制方式写入 out bin age; //十六进制写入,并显示进制前缀 out hex showbase age; //科学计数法 out scientific dPI; return a.exec(); }
操作二进制文件
#include QCoreApplication #include QFile #include QDebug #include QDate #include QDataStream int main(int argc, char *argv[]) //往文件中写入数据 QCoreApplication a(argc, argv); QFile binFile("info.bat"); if(binFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) QDataStream out( binFile); out QString("半生瓜のblog") QDate::fromString("2022-01-24","yyyy-MM-dd") (qint32)19; binFile.close(); else qDebug() binFile.errorString(); binFile.setFileName("info.bat");//指明要操作的文件 if(binFile.open(QIODevice::ReadOnly)) QDataStream in( binFile); //怎么写怎么读 QString Name; QDate NowTime; qint32 Age; in Name NowTime Age; qDebug() Name NowTime Age; binFile.close(); else qDebug() binFile.errorString(); return a.exec(); }
示例:获取文件信息
void FileInfo::getFileInfo(QString fileName) //通过这个类来获取文件的信息 QFileInfo info(fileName); qint64 size = info.size();//获取文件大小 QDateTime createTime = info.created();//获取文件创建时间 QDateTime lastModTime = info.lastModified();//获取文件最后一次被的修改的时间 QDateTime lasReadTime = info.lastRead();//获取文件最后一次被读取的时间 //文件的属性信息 bool isDir = info.isDir();//是不是目录 bool isFile = info.isFile();//是不是文件 bool isSymLink = info.isSymLink();//是不是链接 bool isHid = info.isHidden();//是否隐藏 bool isReadable = info.isReadable();//是否可读 bool isWritable = info.isWritable();//是否可写 bool isExcutable = info.isExecutable();//是否可执行 //根据读取信息设置控件信息 ui- FileSizeLineEdit- setText(QString::number(size));//整型转字符串 ui- CreateTimeLineEdit- setText(createTime.toString());//QDate转字符串 ui- LastModTimeLineEdit- setText(lastModTime.toString()); ui- LastCheckTimeLineEdit- setText(lasReadTime.toString()); ui- isDirCheckBox- setChecked(isDir); ui- isFileCheckBox- setChecked(isFile); ui- isExecutableCheckBox- setChecked(isExcutable); ui- isSymLinkCheckBox- setChecked(isSymLink); ui- isHiddenCheckBox- setChecked(isHid); ui- isWritableCheckBox- setChecked(isWritable); ui- isReadableCheckBox- setChecked(isReadable); void FileInfo::on_browerFileBtn_clicked() //选择文件 QString fileName = QFileDialog::getOpenFileName(this,"打开文件",".","files(*)"); //选择目录QString path = QFileDialog::getExistingDirectory(this,"选择目录","."); ui- FileNameLineEdit- setText(fileName);//文件名(带路径的) getFileInfo(fileName); }
Qt6-Qt5代码移植到Qt6 尝试下Qt5的代码是否可以正常在Qt6上编译通过,使用的我网易云代码,这里测试的时候我先添加了5.12的版本进行测试没有问题,下面将切换到6.0的环境试一下。
相关文章
- Qt之加载QSS文件
- Qt之QTemporaryFile
- Qt之QDesktopServices
- Qt之字体文件(TTF)
- Qt之布局管理器
- Qt之HTTPS登录
- 【VS开发】【Qt开发】使用process explorer查看exe调用dll的情况
- Qt之图标切分与合并
- 【QT】QT富文本
- 【QT】TCP、UDP通信
- qt通过QFileDialog获取文件路径&保存文件&选择文件夹
- PyQt(Python+Qt)学习随笔:在一个窗口点击按钮弹出另一个窗口的实现方法及注意事项
- PyQt(Python+Qt)学习随笔:Designer中PushButton按钮flat属性
- PyQt(Python+Qt)学习随笔:Qt Designer中图像资源的使用及资源文件的管理
- QT窗体程序中使用输出常见的问题与库文件支持
- 如何为QT窗体添加工具栏和菜单栏
- QT 截取屏幕的实现
- QT中PRO文件写法的详细介绍,很有用,很重要!
- Qt添加库文件和头文件目录(QCreator)
- QT发布含qml文件的程序,打包后无法加载qml窗口
- qt5-更改QT执行文件图标
- Qt 文件常见操作管理类
- Qt 操作SQLite数据库
- [ PyQt入门教程 ] PyQt窗口布局管理_Qt Designer