Files
ximeaAirborneSystem/Source_Files/fileoperation.cpp

200 lines
5.1 KiB
C++

#include "Header_Files/fileoperation.h"
FileOperation::FileOperation()
{
m_copyFileStatus = 0;
}
bool FileOperation::copyFileToPath(QString sourceDir ,QString toDir, bool coverFileIfExist)
{
toDir.replace("\\","/");
if (sourceDir == toDir){
return true;
}
if (!QFile::exists(sourceDir)){
return false;
}
QDir *createfile = new QDir;
bool exist = createfile->exists(toDir);
if (exist){
if(coverFileIfExist){
createfile->remove(toDir);
}
}//end if
if(!QFile::copy(sourceDir, toDir))
{
return false;
}
return true;
}
QStringList FileOperation::getSubfolders(QDir parentFolder)
{
QStringList entryList= parentFolder.entryList();
QStringList result;
//
for(int i=0;i<entryList.size();i++)
{
auto element=entryList.at(i).toLocal8Bit().constData();
QString tmp=entryList.at(i);
if(!strcmp(element,".") || !strcmp(element,".."))//QString::compare()
{
//std::cout<<"11111111111111111111111111111"<<std::endl;
continue;
}
result.append(entryList.at(i));
//std::cout<<""<<entryList.at(i).toLocal8Bit().constData()<<std::endl;
}
return result;
}
QString FileOperation::getFlashDrivePath()
{
//获取u盘路径
QDir flashDrivePath("/media");
QStringList subfolders=getSubfolders(flashDrivePath);
flashDrivePath.cd(subfolders.at(0));
QStringList result=getSubfolders(flashDrivePath);
if(result.isEmpty())
{
//std::cout<<"FileOperation::getFlashDrivePath--------------------------: 请插入u盘!"<<std::endl;
return "";
}
if(!flashDrivePath.cd(result.at(0)))
{
std::cout<<"进入u盘失败!"<<std::endl;
return "";
}
if(!flashDrivePath.exists("ximeaImageData"))
{
flashDrivePath.mkdir("ximeaImageData");
}
flashDrivePath.cd("ximeaImageData");
QString destinationFolder=flashDrivePath.absolutePath();
std::cout<<"进入u盘成功:"<<destinationFolder.toStdString()<<std::endl;
return destinationFolder;
}
QDir FileOperation::getSourcePath()
{
//获取源数据文件夹
QDir sourcePath("/media/nvme");
// QString homePath=QDir::homePath();
// QDir sourcePath(homePath);
// bool re=sourcePath.exists("ximeaImageData");
// if(!re)
// {
// std::cout<<"No data!"<<std::endl;
// sourcePath.mkdir("ximeaImageData");
// }
//
// sourcePath.cd("ximeaImageData");
return sourcePath;
}
void FileOperation::copyFile()
{
QString destinationFolder= getFlashDrivePath();
QDir sourcePath= getSourcePath();
if(destinationFolder.isEmpty())
{
m_copyFileStatus = 3;
emit copyFileStatus(m_copyFileStatus);
return;
}
QStringList timesFilter,sbgFilter,hdrFilter,datFilter;
timesFilter<<"*.times";
sbgFilter<<"*.sbg";
hdrFilter<<"*.hdr";
datFilter<<"*.dat";
QStringList timesEntryList=sourcePath.entryList(timesFilter,QDir::Files);
QStringList sbgEntryList=sourcePath.entryList(sbgFilter,QDir::Files);
QStringList hdrEntryList=sourcePath.entryList(hdrFilter,QDir::Files);
QStringList datEntryList=sourcePath.entryList(datFilter,QDir::Files);
if(timesEntryList.isEmpty() && sbgEntryList.isEmpty() && hdrEntryList.isEmpty() && datEntryList.isEmpty())
{
m_copyFileStatus = 2;
emit copyFileStatus(m_copyFileStatus);
return;
}
m_copyFileStatus = 1;
emit copyFileStatus(m_copyFileStatus);
//copy times file
std::cout<<"copy times file"<<std::endl;
for(int i=0;i<timesEntryList.size();i++)
{
// std::cout<<"------"<<timesEntryList.at(i).toLocal8Bit().constData()<<std::endl;
// std::cout<<"------"<<timesEntryList.at(i).<<std::endl;
QString source=sourcePath.absolutePath()+"/"+timesEntryList.at(i);
QString destination=destinationFolder+"/"+timesEntryList.at(i);
copyFileToPath(source,destination,false);
}
//copy sbg file
std::cout<<"copy sbg file"<<std::endl;
for(int i=0;i<sbgEntryList.size();i++)
{
QString source=sourcePath.absolutePath()+"/"+sbgEntryList.at(i);
QString destination=destinationFolder+"/"+sbgEntryList.at(i);
copyFileToPath(source,destination,false);
}
//copy hdr file
std::cout<<"copy hdr file"<<std::endl;
for(int i=0;i<hdrEntryList.size();i++)
{
QString source=sourcePath.absolutePath()+"/"+hdrEntryList.at(i);
QString destination=destinationFolder+"/"+hdrEntryList.at(i);
copyFileToPath(source,destination,false);
}
//copy image file
std::cout<<"copy image file"<<std::endl;
for(int i=0;i<datEntryList.size();i++)
{
QString source=sourcePath.absolutePath()+"/"+datEntryList.at(i);
QString destination=destinationFolder+"/"+datEntryList.at(i);
copyFileToPath(source,destination,false);
}
m_copyFileStatus = 0;
emit copyFileStatus(m_copyFileStatus);
}
void FileOperation::deleteFile()
{
QDir sourcePath= getSourcePath();
sourcePath.removeRecursively();
}