#include <QtCore/QCoreApplication>
#include <QXmlStreamWriter>
#include <QFile>
#include <QDebug>
#include <QDir>
#include <QTime>
struct FileStat{
//文件名
QString fileName;
//文件大小
QString fileSize;
//上次修改时间
QString atTime;
//文件类型
QString fileType;
};
typedef QList<FileStat> StatList;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//QList
StatList fileList;
//遍历C盘根目录下的文件文件夹,并将属性保存到list中
QDir dir("c:/");
dir.setFilter(QDir::Files|QDir::Dirs);
foreach(QFileInfo fInfo, dir.entryInfoList())
{
//排除当前目录和上级目录
if(fInfo.fileName().left(1) == ".")
{
continue;
}
FileStat fStat;
fStat.fileName = fInfo.fileName();
fStat.atTime = fInfo.lastModified().toLocalTime().toString("yyyy-MM-dd hh:mm:ss");
if(fInfo.isDir())
{
fStat.fileSize ="0";
fStat.fileType = "isDir";
}
else if(fInfo.isFile())
{
QString fileSize = fInfo.size() / 1024 /1024?
QString::number(fInfo.size() / 1024 /1024)+="MB":
fInfo.size() / 1024 ?
QString::number(fInfo.size() / 1024)+="KB" : QString::number(fInfo.size())+="B";
fStat.fileSize = fileSize;
fStat.fileType ="isFile";
}
fileList.append(fStat);
}
//---------------------------------------------------xml文件写入
int id = 1;
QFile file("out.xml");
if(file.open(QIODevice::WriteOnly|QIODevice::Text))
{
QXmlStreamWriter writer(&file);
writer.setAutoFormatting(true);
//设置自动缩进大小
writer.setAutoFormattingIndent( 2 );
//写入xml文档头,一般为: \<?xml version="1.0" encoding="UTF-8"?>\
writer.writeStartDocument();
//写入开始标记FileMsg
writer.writeStartElement("FileMsg");
//循环将容器中的数据写入到xml文件
StatList::Iterator it = fileList.begin();
for(;it != fileList.end();it++)
{
//写入开始标记DATA
writer.writeStartElement("DATA");
//在开始标记中写入属性ID
writer.writeAttribute("ID",QString::number(id++,10));
//写入文本信息
writer.writeTextElement("FILENAME",it->fileName);
writer.writeTextElement("FILESIZE",it->fileSize);
writer.writeTextElement("LASTMODIFY",it->atTime);
writer.writeTextElement("FILETYPE",it->fileType);
//写入结束标记DATA
writer.writeEndElement();
}
//写入结束标记FileMsg
writer.writeEndElement();
//xml文档结束
writer.writeEndDocument();
//关闭文件
file.close();
}
else
{
qDebug()<<"Open File Failure";
}
//----------------------------------------------------xml文件写入结束
return a.exec();
}
//QXmlStreadWriter的使用效果如图: