ディレクトリを再帰的にたどってその内容を変更しようとしています。その変更は、すべてのファイルとサブディレクトリのファイルに対して行う必要があります。
void EncryptMountedFolder(QString DirPath)
{
QStringList listFile;
QStringList listDir;
int r=0;
if(WalkDir(DirPath,listFile,listDir))
{
foreach (QString filePath, listFile)
{
//modif of file with filePath as path
}
foreach(QString subdirPath, listDir)
{
EncryptMountedFolder(subdirPath);
}
}
else qDebug()<<"can not find "<<DirPath<<"or it is not folder path ";
}
WalkDir
関数:
bool WalkDir(QString DirPath, QStringList &FList, QStringList &DList)
{
QString p=QDir::fromNativeSeparators(DirPath);
QDir dir( p );
if(dir.exists())
{
dir.setFilter( QDir::Dirs | QDir::Files | QDir::NoSymLinks );
const QFileInfoList fileinfolist = dir.entryInfoList();
foreach(const QFileInfo& fi,fileinfolist)
if(fi.baseName() != "")
{
if( fi.isDir() && fi.isReadable() )
DList=DList << fi.absoluteFilePath() ;
else
FList= FList<< fi.absoluteFilePath();
}
return true;
}
else
{ qDebug()<<"not valid dir path or doesn't exist"<<DirPath ;
return false;
}
}
すべてのサブディレクトリの下のファイルは必要に応じて変更されましたが、クラッシュして次のようにCritical error detected c0000374
なりqlist.h
ますQ_OUTOFLINE_TEMPLATE void QList<T>::free(QListData::Data *data)
。 qFree(data);
誰かが私が見逃しているものを見つけることができますか?
前もって感謝します。