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 文件处理的更多相关文章

  1. Qt 文件处理(readLine可以读取char[],并且有qSetFieldWidth qSetPadChar 等全局函数)

    Qt 文件处理 Qt提供了QFile类来进行文件处理,为了更方便地处理文本文件或二进制文件,Qt还提了QTextStream类和QDataStream类,处理临时文件可以使用QTemporaryFil ...

  2. Qt文件发布

    1.打开Qt文件夹下的,其他版本可能为Qt (版本号)for Desktop cmd 2.将Release文件下的exe文件复制到别的文件夹,我这里为G:\Qt\QT_project\ff 3.在Qt ...

  3. QT 文件对话框(QFileDialog)

    1.选择文件(上传.打开...) QString QFileDialog::getOpenFileName( QWidget *parent = , //parent,用于指定父组件.注意,很多Qt组 ...

  4. QT 文件操作

    QT提供了QFile类用于文件读写 QFile可以读写文本文件,也可以读写二进制文件 #include "widget.h" #include <QGridLayout> ...

  5. Qt文件信息获取之QFileInfo

    在Qt中为文件的操作和信息获取提供了许多方便的类,常用的有QDir,QFile,QFileInfo以及QFileDialog,在本文中主要介绍用于获取关于文件信息的QFileInfo类. QFileI ...

  6. Qt 文件搜索(写入文本文件)

    代码无意间在网上找到,下载回来后改了几个格式,编译后经测试可以正常使用,这个个文件搜索的很好的例子,有两种搜索方式:一种是按文件名作为关键字进行搜索,一种是以文档中所包含的关键字进行搜索,贴两张图先: ...

  7. Qt 文件监视器 QFileSystemWatcher

    之前有过对Qt的QFile以Text纯文本方式进行读取时的学习,这两天由于实时需要又对QFileSystemWatcher(这个类是干什么用的)进行了学习,发现也是问题很让人头疼. 我想监视一个文件夹 ...

  8. Qt5:Qt文件操作类 QFile

    在QT中,操作文件一般不使用C++提供的文件操作类 , 因为操作文件的时候,要用到C++提供的 string 类,而在QT中使用的是Qt自己实现的一个string类 QString .在Qt中使用C+ ...

  9. Qt 文件的操作

    文件操作是应用程序必不可少的部分.Qt 作为一个通用开发库,提供了跨平台的文件操作能力.从本章开始,我们来了解下 Qt 的文件以及输入输出的功能,也就是 I/O 系统. Qt 通过QIODevice提 ...

  10. Qt: 文件、文件夹的操作;

    Qt没有提供单独的函数来对文件.文件夹进行操作, 但是提供了两个类: QFile, QDir; 1.文件操作 ) 文件是否存在: QFile file("D:/test.jpg") ...

随机推荐

  1. InstallShield 2010 使用 .net framework 4.5

    一.InstallShield 2010 使用 .net framework 4.5记录 1.prq的地址,通过以下地址,下载相应的prq文件 .NET 4.5: http://saturn.inst ...

  2. [转]12款最佳Linux命令行终端工具

    摘要 “工欲善其事必先利其器”,作为菜鸟,也是从别人那里偷学来的一些东东.今天看到同事用到一个终端命令行工具,觉得自己弱爆了.然后在网上搜了下该工具.发现类似的工具还是挺多的,只是自己不知道罢了. 原 ...

  3. Java学习注意事项

    一个Java文件中可以包含多个类. 如果有public类,则文件名必须和public类一样. 例如: class Pie { void f(){ System.out.println("Pi ...

  4. oracle 中的dual表简介与用法

    Dual表是每个数据库创建时默认生成的,该表仅有一列一行. 1)分析dual表执行,如下:

  5. 思维导图-javascript(转)

    学习的道路就是要不断的总结归纳,好记性不如烂笔头,so,下面将po出8张javascript相关的思维导图. 思维导图小tips:思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ,它简单却又 ...

  6. HTTP Basic Authentication

    Client端发送请求, 要在发送请求的时候添加HTTP Basic Authentication认证信息到请求中,有两种方法:1. 在请求头中添加Authorization:    Authoriz ...

  7. 【AngularJS】—— 10 指令的复用

    前面练习了如何自定义指令,这里练习一下指令在不同的控制器中如何复用. —— 来自<慕课网 指令3> 首先看一下一个小例子,通过自定义指令,捕获鼠标事件,并触发控制器中的方法. 单个控制器的 ...

  8. 【Solr】solr的增删改查

    目录 创建工程 增 删 改 查 高量查询 回到顶部 创建工程 普通的java web工程即可,我采用的是spring mvc! 回到顶部 增 @Autowired private SolrServer ...

  9. Java多线程初学者指南(7):向线程传递数据的三种方法

    在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果.但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别.由于线程 ...

  10. SQL Server 服务器器信息备份(一)--login新建脚本备份

    前言 若你的企业使用SQL Server数据库镜像为容灾技术. 那你一定做过在镜像切换之前要新建Login,而且若Login密码不同,要修改链接数据库的字符串,在切换完之后则仍需要给数据库重新赋予权限 ...