Qt 文件处理
1.删除目录下所有的文件
void deleteAllFiles(const QString& fileDir)
{ QDir dir(fileDir);
if(!dir.exists())
{
return;
} QFileInfoList fileInfofList=dir.entryInfoList(QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::AllDirs); foreach (QFileInfo fileInfo, fileInfofList)
{
if(fileInfo.isDir())
{
deleteAllFiles(fileInfo.absoluteFilePath());
}
else if(fileInfo.isFile())
{
QFile file(fileInfo.absoluteFilePath());
file.remove();
} } QDir tempDir;
tempDir.rmdir(fileDir);//删除空的目录
}
删除超过多长时间的旧文件。toTime_t() 秒
const int OVERTIME=***;
void MainWindow::deleteOldFile(QString fileDir)
{
QDir dir(fileDir);
if(dir.exists())
{
dir.setFilter(QDir::Files | QDir::NoSymLinks);
QDateTime nowDateTime = QDateTime::currentDateTime();
QFileInfoList list = dir.entryInfoList();
for (int i = ; i < list.size(); ++i)
{
QFileInfo fileInfo = list.at(i);
//秒
int passTime=nowDateTime.toTime_t()-fileInfo.created().toTime_t();
if(passTime>OVERTIME)
{
QFile file(fileInfo.absoluteFilePath());
file.remove();
} }
}
}
QString fileDir="/home/likewei/公共的/dispatch_log";
deleteOldFile(fileDir);
2.读文件
QFile file(yamlFile);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
log::d("yamle open file fail!");
return false;
} QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
log::d(line);
}
file.close ();
2.QWidgetList导出excel
void ReportDlg::onExport()
{ QString file_path = QFileDialog::getSaveFileName(this,"Excel file",qApp->applicationDirPath(),
tr("Files (*.csv)")); if(file_path.isEmpty())
{
return;
} QFile file(file_path);
if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
qDebug()<< "Cannot open file for writing"; return;
} QTextStream out(&file);
int row_count=tw->rowCount();
int col_count=tw->columnCount();
QString tw_value; for(int h=;h<col_count;h++)
{ tw_value=tw->horizontalHeaderItem(h)->text();
out<<tw_value<<",";
}
out<<"\n";
for(int i=;i<row_count;i++)
{ for(int j=;j<col_count;j++)
{ tw_value=tw->item(i,j)->text();
out<<tw_value<<",";
}
out<<"\n";
} file.close(); }
3.记录错误信息,每天用新的文件记录信息,以防止记录的信息太多。
void MainWindow::log(QString msg)
{ QString fileName=QDateTime::currentDateTime ().toString ("yyyy_MM_dd")+".log";
QString currentDir= QCoreApplication::applicationDirPath()+"/logs"; QDir dir;
if(!dir.exists (currentDir))
{
dir.mkpath (currentDir);
}
fileName=currentDir+"/"+fileName; QFile file(fileName);
if(!file.exists (fileName))
{
file.setFileName (fileName);
}
file.open(QIODevice::WriteOnly|QFile::Append);
QTextStream in(&file);
in<<QDateTime::currentDateTime ().toString ("[hh:mm:ss:zzz]")+" "+msg+"\r\n";
file.close (); }
4.选择文件对话框
QString defaultDir=QCoreApplication::applicationDirPath()+"/data";
QString fileName= QFileDialog::getOpenFileName(
this,
"Import File",
defaultDir,
"file (*.txt *.bin);;all files (*.*)");
if(!fileName.isEmpty())
{
emit sigImportFile(fileName);
}
Qt 文件处理的更多相关文章
- Qt 文件处理(readLine可以读取char[],并且有qSetFieldWidth qSetPadChar 等全局函数)
Qt 文件处理 Qt提供了QFile类来进行文件处理,为了更方便地处理文本文件或二进制文件,Qt还提了QTextStream类和QDataStream类,处理临时文件可以使用QTemporaryFil ...
- Qt文件发布
1.打开Qt文件夹下的,其他版本可能为Qt (版本号)for Desktop cmd 2.将Release文件下的exe文件复制到别的文件夹,我这里为G:\Qt\QT_project\ff 3.在Qt ...
- QT 文件对话框(QFileDialog)
1.选择文件(上传.打开...) QString QFileDialog::getOpenFileName( QWidget *parent = , //parent,用于指定父组件.注意,很多Qt组 ...
- QT 文件操作
QT提供了QFile类用于文件读写 QFile可以读写文本文件,也可以读写二进制文件 #include "widget.h" #include <QGridLayout> ...
- Qt文件信息获取之QFileInfo
在Qt中为文件的操作和信息获取提供了许多方便的类,常用的有QDir,QFile,QFileInfo以及QFileDialog,在本文中主要介绍用于获取关于文件信息的QFileInfo类. QFileI ...
- Qt 文件搜索(写入文本文件)
代码无意间在网上找到,下载回来后改了几个格式,编译后经测试可以正常使用,这个个文件搜索的很好的例子,有两种搜索方式:一种是按文件名作为关键字进行搜索,一种是以文档中所包含的关键字进行搜索,贴两张图先: ...
- Qt 文件监视器 QFileSystemWatcher
之前有过对Qt的QFile以Text纯文本方式进行读取时的学习,这两天由于实时需要又对QFileSystemWatcher(这个类是干什么用的)进行了学习,发现也是问题很让人头疼. 我想监视一个文件夹 ...
- Qt5:Qt文件操作类 QFile
在QT中,操作文件一般不使用C++提供的文件操作类 , 因为操作文件的时候,要用到C++提供的 string 类,而在QT中使用的是Qt自己实现的一个string类 QString .在Qt中使用C+ ...
- Qt 文件的操作
文件操作是应用程序必不可少的部分.Qt 作为一个通用开发库,提供了跨平台的文件操作能力.从本章开始,我们来了解下 Qt 的文件以及输入输出的功能,也就是 I/O 系统. Qt 通过QIODevice提 ...
- Qt: 文件、文件夹的操作;
Qt没有提供单独的函数来对文件.文件夹进行操作, 但是提供了两个类: QFile, QDir; 1.文件操作 ) 文件是否存在: QFile file("D:/test.jpg") ...
随机推荐
- PHP 线程安全与非线程安全版本的区别深入解析
Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍 ...
- java练手 公约数和公倍数
Problem D 公约数和公倍数 时间限制:1000 ms | 内存限制:65535 KB 描述 小明被一个问题给难住了,现在需要你帮帮忙.问题是:给出两个正整数,求出它们的最大公约数和最小 ...
- 使用type="redirect"重定向,传递List等变量到jsp页面的问题
Struts2在提交表单的时候,使用「type="redirect"」重定向到相应的jsp页面. Action中的List表单是无法传到相应的jsp页面. 我猜测是因为List作为 ...
- 编译CDH Spark源代码
如何编译CDH Spark源代码 经过漫长的编译过程(我编译了2个半小时),最终成功了,在assembly/target/scala-2.10目录下面有spark-assembly-1.0.0-cdh ...
- EF接触03
emdx文件解读:
- iOS开发——高级篇——内存分析,Instruments
一.内存分析 1.静态内存分析(Analyze)不运行程序,直接对代码进行内存分析,查看代码是否有内存泄露优点:分析速度快,并且可以对所有的代码进行内存分析缺点:分析结果不一定准确(没有运行程序,根据 ...
- iOS开发——UI基础-UIImage,UIImageView的使用
1.UIImage 创建UIImage的两种方法 UIImage *image = [UIImage imageNamed:imageNmae]; UIImage *image = [UIImage ...
- 160809209_李梦鑫_C语言程序设计实验3 循环结构程序设计
<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吉吉老师 实验地点 C05 ...
- opencv png和jpg的叠加
char *bgFile = "C:/C_Project/HandTraining/Debug/res/bg.jpg"; FILE *file = fopen(bgFile, &q ...
- 39 网络相关函数(七)——live555源码阅读(四)网络
39 网络相关函数(七)——live555源码阅读(四)网络 39 网络相关函数(七)——live555源码阅读(四)网络 简介 14)readSocket从套接口读取数据 recv/recvfrom ...