zl程序教程

您现在的位置是:首页 >  工具

当前栏目

【QT】QT文件处理

Qt文件 处理
2023-09-27 14:25:56 时间
文件处理

QFile类用于文件操作,它提供了读写文件的接口,可以读写文件、二进制文件和Qt资源文件。

处理文本文件和二进制文件,可以使用QTextStream类和QDataStream类。处理临时文件可以使用QTemporaryFile,获取信息可以使用QFileInfo,处理目录可以使用QDir,监视文件和目录变化可以使用QFileSystemWatcher。

image-20220124203618757

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();

}

示例:获取文件信息

image-20220124232543877

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的环境试一下。